shell 比较与测试

比较与测试

  • 比较与测试
    • 1.1 算数比较
    • 1.2 字符串比较
      • 1.2.1 比较两个字符串是否相同
      • 1.2.2 比较两个字符串是否不同
      • 1.2.3 找出在字母表中靠后的字符串
      • 1.2.4 测试空串
    • 2 测试语句
比较符号 含义
-eq 等于
-ne 不等于
-gt 大于(greater)
-lt 小于(less)
-ge 大于等于
-le 小于等于
逻辑操作符 含义
-a 逻辑与
-o 逻辑或
文件格式测试符 含义
-f 如果给定的变量包含正常的文件路径或文件名,则返回真
-x 如果给定的变量包含的文件可执行,则返回真
-d 如果给定的变量包含的是目录,则返回真
-e 如果给定的变量包含的文件存在,则返回真
-c 如果给定的变量包含的是一个字符设备文件的路径,则返回真
-b 如果给定的变量包含的是一个块设备文件的路径,则返回真
-w 如果给定的变量包含的文件可写,则返回真
-r 如果给定的变量包含的文件可读,则返回真
-L 如果给定的变量包含的是一个符号链接,则返回真

1.1 算数比较

1.2 字符串比较

  进行字符串比较时,最好用双中括号,因为有时候采用单个中括号会产生错误

双中括号是Bash的一个扩展特性。如果出于性能考虑,使用ash或dash来运行脚本,那么将无法使用该特性

1.2.1 比较两个字符串是否相同

  当 str1 等于 str2 时,返回真。也就是说, str1 和 str2 包含的文本是一模一样的

[[ $str1 = $str2 ]]
或
[[ $str1 = $str2 ]]

1.2.2 比较两个字符串是否不同

  如果 str1 和 str2 不相同,则返回真

[[ $str1 != $str2 ]]

1.2.3 找出在字母表中靠后的字符串

  字符串是依据字符的ASCII值进行比较的。例如,A的值是0x41,a的值是0x61。因此,A小于a,AAa小于Aaa

比较命令 含义
[[ str2 ]] 如果 str1 的字母序比 str2 大,则返回真
[[ str2 ]] 如果 str1 的字母序比 str2 小,则返回真

1.2.4 测试空串

比较命令 含义
[[ -z $str1 ]] 如果 str1 为空串,则返回真
[[ -n $str1 ]] 如果 str1 不为空串,则返回真

2 测试语句

if [[ -n $str1 ]] && [[ -z $str2 ]] ;
then
commands;
fi
str1="Not empty "
str2=""
if [[ -n $str1 ]] && [[ -z $str2 ]];
then
echo str1 is nonempty and str2 is empty string.
fi
if [ $var -eq 0 ]; then echo "True"; fi
或
if test $var -eq 0 ; then echo "True"; fi

你可能感兴趣的:(shell 比较与测试)