比较与测试
比较符号 | 含义 |
---|---|
-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