数值比较
| 比较 |
描述 |
| n1 -eq n2 |
n1是否与n2相等 |
| nl -ge n2 |
n1是否大于或等于n2 |
| n1 -gt n2 |
n1是否大于n2 |
| n1 -le n2 |
n1是否小于或等于n2 |
| n1 -lt n2 |
n1是否小于n2 |
| nl -ne n2 |
n1是否不等于n2 |
字符串比较
| 比较 |
描述 |
| str1 = str2 |
str1是否和str2相同 |
| str1 != str2 |
str1是否和str2不同 |
| str1 < str2 |
检查str1是否比str2小 |
| str1 >str2 |
检查str1是否比str2大 |
| -n str1 |
检查str1的长度是否非0 |
| -z string |
string的长度为是否为零 |
| string |
string不为空(长度大于0),则判断为真 |
| :str1 |
检查str1的长度是否非0 |
| string1 '>' string2 |
按照字典顺序string1排列在string2之后 |
| string1 '<' string2 |
按照字典顺序string1排列在string2之前 |
文件比较
| 比较 |
描述 |
| -a file |
如果 file 存在,则为true |
| -b file |
如果 file 存在并且是一个块(设备)文件,则为true |
| -c file |
如果 file 存在并且是一个字符(设备)文件,则为true |
| -d file |
file是否存在并是一个目录 |
| -e file |
file是否存在 |
| -f file |
file是否存在并是一个文件 |
| -g file |
如果 file 存在并且设置了组 ID,则为true |
| -G file |
fi1e是否存在并且默认组与当前用户相同 |
| -h file |
如果 file 存在并且是符号链接,则为true |
| -k file |
如果 file 存在并且设置了它的“sticky bit”,则为true |
| -L file |
如果 file 存在并且是一个符号链接,则为true |
| -N file |
如果 file 存在并且自上次读取后已被修改,则为true |
| -O file |
如果 file 存在并且属于有效的用户 ID,则为true |
| -p file |
如果 file 存在并且是一个命名管道,则为true |
| -r file |
file是否存在并可读 |
| -s file |
file是否存在并非空 |
| -S file |
如果 file 存在且是一个网络 socket,则为true |
| -t fd |
如果 fd 是一个文件描述符,并且重定向到终端,则为true。\n 这可以用来判断是否重定向了标准输入/输出/错误 |
| -u file |
如果 file 存在并且设置了 setuid 位,则为true |
| -w file |
file是否存在并可写 |
| -x file |
file是否存在并可执行 |
| -0 file |
file是否存在并属当前用户所有 |
| file1 -nt file2 |
file1是否比file2新 |
| file1 -ot file2 |
file1是否比file2旧日 |
$ 相关
\(0: shell或shell脚本的名字
\)*: 以一对双引号给出参数列表
\(@: 将各个参数分别加双引号返回
\)#: 参数的个数
$_: 代表上一个命令的最后一个参数
\[: 代表所在命令的PID
$!: 代表最后执行的后台命令的PID
$?: 代表上一个命令执行后的退出状态
\]