set -o nounset
set -o errexit
shell 命令 | 含义 |
---|---|
$0 | 当前脚本的文件名 |
$n | 传递给脚本的参数 |
$# | 传递给脚本的参数的个数 |
$* | 传递给脚本的所有参数 |
$@ | 传递给脚本的所有参数 |
$? | 上个命令的退出状态,或者函数的返回值 |
$$ | 当前shell的进程ID |
-n | 字符串长度是否不为0,若不为0则为True |
-e | 如果文件存在,则为True |
-d | 目录是否存在,若存在则为True |
-h | 是否是软链接,若是,则为True |
-lt | low than 小于 |
-ge | greater equals 大于等于 |
-le | less equals 小于等于 |
-eq | equals 等于 |
-ne | low than 不等于 |
-gt | greater than 大于 |
if判断
#!/bin/bash
if [ -n "$1"]
then
echo "第一个参数$1"
else
echo "第一个参数为空"
fi
while循环
while true
do
wget --spider -q -o /dev/null --tries=1 -T 10 "127.0.0.1:${port}/ping"
if [ $? -eq 0 ]; # 运行成功
then
echo "ping success"
break
else
echo "ping failed, try again"
sleep 3
fi
done
for循环
ports=(15085 15086)
for i in "${!ports[@]}";
do
port=${ports[$i]}
xxxxx
done
cat logs.txt
显示文件,-n表示也显示行号
cat -n logs.txt
cat > logs.txt
cat camly* > filename
path2=$(readlink -f $path)
/dev/null 在Linux中其实是一个空设备文件。它天生就自命不凡,与普通文件划清界限。
其它文件遇到写入的内容照单全收,而 /dev/null 对于写入的东西通通扔掉。