文件比较例子: if [ -e /etc/passwd ]
字符串比较例子: if [ $string1 == $string2]
数值比较例子:if [ $var1 = $var2]
参数 | 说明 | 示例 |
-e file | 如果文件或目录存在则为真 | -e file |
-r file | 如果文件存在且可读则为真 | -r file |
-w file | 如果文件存在且可写则为真 | -w file |
-x file | 如果文件存在且可执行则为真 | -x file |
-s file | 如果文件存在且至少有一个字符则为真 | -s file |
-d file | 如果文件存在且为目录则为真 | -d file |
-f file | 如果文件存在且为普通文件则为真 | -f file |
-c file | 如果文件存在且为字符型文件则为真 | -c file |
-b file | 如果文件存在且为块特殊文件则为真 | -b file |
file1 -nt file2 | 检查file1是否比file2新 新则为真 | file1 -nt file2 |
file1 -ot file2 | 检查file1是否比file2旧 旧则为真 | file1 -ot file2 |
file1 -ef file2 | 检查file1与file2是否为同一文件(硬件接,inode) 一致则为真 | file1 -ef file2 |
参数 | 说明 | 示例 |
-eq | 等于则为真 | $a -eq $b |
-ne | 不等于则为真 | $a -ne $b |
-gt | 大于则为真 | $a -gt $b |
-ge | 大于等于则为真 | $a -ge $b |
-lt | 小于则为真 | $a -lt $b |
-le | 小于等于则为真 | $a -le $b |
参数 | 说明 | 示例 |
== | 等于则为真 | $a = $b |
!= | 不等于则为真 | $a != $b |
-z | 字符串为空则为真 | -z $a |
-n | 字符串不为空则为真 | -n $b |
str1 > str2 | str1大于 str2 则为真 | str1 \>str2 |
str1 < str2 | str1 小于 str2 则为真 | str1 \> str2 |
参数 | 说明 | 示例 |
-a或&& | 表示and或并且,只有两个表达式都为真时条件才能成立 -a只能在test和[]中使用,&&只能在[[]]中使用 | [条件判断1 -a 条件判断2 -a 条件判断3] [条件判断1] && [条件判断2] |
-o 或 || | 表示or或或者,两个表达式中有一个为真则成立 其中 -o只能在test和[]中使用 ||只能在[[]]中使用 | [条件判断1 -o 条件判断2 -o 条件判断3] |
! | 取反 | |
() | 改变表达式的优先级,需要加转义符 | 条件判断1 -a (条件判断2 -o 条件判断3) |
参数 | 说明 | 示例 |
* | 匹配0或多个字符 | a*b |
? | 匹配任意一个字符 | a?b |
[abcde] | 匹配中括号中任意一个字符 | a[abcde]b |
[!abcde] | 匹配除了中括号中任意一个字符 | a[!abc]b |
{str1,str2,...} | 匹配str1,str2,...中任意一个字符串 | a{str1,str2,...}b |
[a-z] | 匹配a-z中任意一个字符也可以是数字 | a[a-z] a[0-9] |