您的位置:首页 > 运维架构 > Shell

Linux Shell脚本攻略学习总结:二

2013-07-04 09:26 369 查看
比较与测试

程序中的流程控制是由比较和测试语句来处理的。

我们可以用if,if else 以及逻辑运算符来执行测试,而用一些比较运算符来比较数据项。另外,有一个test 命令也可以用来进行测试。让我们来看看如何使用这些命令。

实战演练:

if 条件:
if condition;
then
commands;
fi

else if 和 else :
if condition;
then
commands;
elif condition;
then
commands
else
commands
fi

if和else语句可以进行嵌套。if的条件判断部分可能会变得很长,但可以用逻辑运算符将它变得简洁一些:

[ condition ] && action; #如果condition为真,则执行action
[ condition ] || action; #如果condition为假,则执行action

&&是逻辑与运算符,||是逻辑或运算符。

算数比较

条件通常被放在封闭的中括号内。一定要注意在[或]与操作数之间是有一个空格的。如果不加,则脚本会报错。例如:

[ $var -eq 0 ] or [ $var -eq 0 ]

对变量值进行算数条件判断:

[ $var -er 0 ] #当$var等于0时,返回真
[ $var -ne 0 ] #当$var为非0时,返回真

其他重要的操作符如下所示:

-gt :大于
-lt :小于
-ge :大于等于
-le :小于等于

字符串比较

使用字符串比较时,最好使用双中括号,因为有时候采用单个中括号会产生错误,所以最好避开它们。

[[ $str1 = $str2 ]] :当str1等于str2时,返回真。也就是说,str1和str2包含的文本是一样的
[[ $str1 ==$str2 ]] :这是检查字符串是否相等的另一种写法
[[ $str1 != $str2 ]] :如果str1和str2不相同,则返回真

我们还可以检查字符串的字母序情况,具体如下所示:

[[ $str1 > $str2 ]] :如果str1的字母序比str2的大,则返回真
[[ $str1 < $str2 ]] :如果str1的字母序比str2的小,则返回真
[[ -z $str1 ]] :如果str1中包含的是空字符串,则返回真
[[ -n $str1 ]] :如果str1中包含的是非空字符串,则返回真

注意:


在 = 号前后各有一个空格。如果忘记加空格,那就不是比较关系了,而变成了赋值语句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: