shell比较与测试的方法详解(图文)
在shell脚本中,可以用if、if else及逻辑运算符进行测试。
用一些比较运算符来比较数据项,还有一个test命令,也可以用来进行测试。
先说下if语句的判断方式,一般如下:
if condition;
then
commands;
fi
esle if 和else:
if conditions;
then
commands;
elif condition;
then
commands;
else
commands;
fi
if与else语句可以嵌套。if的条件判断部分可能会很长,如遇到这样的情况时,可考虑用逻辑运算符使其简洁一些:
[ condition ] && action #如果condition为真,则执行action
[ condition ] || action #如果condition为假,则执行action
&&是逻辑与运算符,||是逻辑或运算符。写Bash脚本时,这是一个很好用的技巧。
下面分别来介绍shell中的算术比较方法、文件系统相关测试、字符串比较方法。
一、算术比较
在shell中,进行算术比较的话,条件通常被放置在封闭的中括号中。注意在[或]与操作数之间有一个空格。如果忘记此空格,脚本会报错。
例如:
[ $var -eq 0 ] or [ $var -eq 0 ]
对变量或修士进行算术条件判断:
[ $var -eq 0 ] #当 $var 等于 0时,返回真。
[ $var -ne 0 ] #当 $var 为非 0 时,返回真。
其它一些常用的操作符,如下:
-gt : 大于
-lt : 小于
-ge : 大于等于
-le :小于等于
可以按照如下的方法,进行多条件的测试,比如:
[ $var1 -ne 0 -o $var2 -gt 2 ] # 逻辑或 -o
二、文件系统的相关测试
可以使用不同的条件标志测试不同的文件系统相关属性。
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件大小非0时为真
-t file 当文件描述符(默认为1)指定的设备为终端时为真
例1:
三、字符串比较
说到shell中的字符串比较,这里要特别注意下:
对字符串进行比较时,最好用双中括号,因为有时采用单个中括号会产生错误,所以请避开使用它们。
字符串判断:
str1 != str2 当串str1和str2不等时为真
-n str1 当串的长度大于0时为真(串非空)
-z str1 当串的长度为0时为真(空串)
str1 当串str1为非空时为真
注意:等号=的前后,要有一个空格。不加空格,就不是比较,而变成赋值操作了。
四、技巧
使用逻辑运算符&&与||可以很容易将多个条件组合起来:
then
commands;
fi
例2:
另外,test命令也可以用来执行条件检测。
用test的好处在于可以避免使用过多的括号。
这里介绍过的[]中的测试条件,同样可以用于test命令。
例3:
至此,有关shell编程中,比较与测试的一些方法就介绍完了,建议大家注意其中标红的几个知识点,好好琢磨掌握下。
您可能感兴趣的文章:
shell比较与测试的方法详解(图文)
shell比较两个字符串是否相等的方法及shell比较运算符
inux shell初级入门教程
shell编程基础之条件测试
shell条件测试语句实例-测试apache是否开启
shell比较两个字符串是否相等的方法
了解bash与sh中的export语法的区别
shell 求字符串长度的方法
shell 逻辑运算符、逻辑表达式用法详解
python和shell像吗