在shell/ target=_blank class=infotextkey>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 :小于等于
可以按照如下的方法,进行多条件的测试,比如:
二、文件系统的相关测试
可以使用不同的条件标志测试不同的文件系统相关属性。
例1:
三、字符串比较
说到shell中的字符串比较,这里要特别注意下:
对字符串进行比较时,最好用双中括号,因为有时采用单个中括号会产生错误,所以请避开使用它们。
字符串判断:
注意:等号=的前后,要有一个空格。不加空格,就不是比较,而变成赋值操作了。
四、技巧
使用逻辑运算符&&与||可以很容易将多个条件组合起来:
例2:
另外,test命令也可以用来执行条件检测。
用test的好处在于可以避免使用过多的括号。
这里介绍过的[]中的测试条件,同样可以用于test命令。
例3:
至此,有关shell编程中,比较与测试的一些方法就介绍完了,建议大家注意其中标红的几个知识点,好好琢磨掌握下。