440
社区成员




目录
打开文本编辑器(vi/vim),新建一个文件first.sh,扩展名为sh(sh代表shell)。扩展名并不影响脚本执行。
#!/bin/bash # 声明这是一个 Bash 脚本,用 Bash 来执行(注意:#!是“shebang”,不是注释)
echo "Hello World" # 输出一行文本“Hello World”到终端
运行Shell脚本的方式
*作为可执行程序
将上述的代码保存为first.sh,并cd到相应目录:
$ chmod +x first.sh # 给文件 first.sh 添加“可执行权限”,让它可以被当作程序运行
$ ./first.sh # 运行当前目录下的脚本 first.sh(需要有可执行权限)
ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | awk -F: '{print $2}' | awk '{print $1}'
# |:管道,表示把前一个命令的输出传给后一个命令
# grep按模式(正则表达式)搜索文件中的文本,并输出匹配的行。
# -v:反向选择(取反),即 排除含有 127.0.0.1 的行。
# -F:表示自定义字段分隔符。
# 以冒号 : 作为分隔符,切割文本;输出 第二个字段(即冒号后面的部分)。
#!/bin/bash
for i in {1..254}; do
ping -c 2 -i 0.5 10.0.0.$i &> /dev/null
if [ $? -eq 0 ]; then
echo "10.0.0.$i is up"
else
echo "10.0.0.$i is down"
fi
done
# -c 2:表示发送 2 个 ping 请求。
# -i 0.5:表示发送请求的间隔为 0.5 秒。
# &> /dev/null:这部分表示将命令的所有输出(包括标准输出和错误输出)都重定向到 /dev/null,即丢弃输出。这样做是为了不显示 ping 命令的结果,只关注它的返回值。
# -eq 是一个 比较操作符,用于判断两个数字是否相等。
$?
是一个特殊的变量,它表示上一条命令的退出状态码(Exit Status),也被称为返回值或退出代码。在 Linux 或 Unix 系统中,命令执行结束后都会返回一个退出状态码,用来表示该命令的执行结果。
0: | 表示命令执行成功,没有出现错误。 |
非0: | 表示命令执行失败,通常不同的非零值代表不同类型的错误(例如文件找不到、权限不足等)。 |