1.7比较与测试

网友投稿 545 2022-11-29

1.7比较与测试

1.7比较与测试

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

1、if条件

if conditon

then

commands;

fi

2、esle if和esle

if condition

then

commands;

else if condition; then

commands;

else

commands;

fi

由于if的条件判断部分可能会变得很长,可以使用逻辑运算符将它变得简洁一些:

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

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

算术比较

条件通常被放置在封闭的中括号内,注意一定要在[或]与操作数之间有一个空格。如

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

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

[ $var -eq 0 ]#当$var等于0时,返回真

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

其他操作符:

-gt:大于

-lt:小于

-ge:大于或等于

-le;小于或等于

可以按照下面的方法结合多个条件进行测试:

[ $var1 -ne 0 -a $var2 -gt 2 ] #使用逻辑与-a

[$var1 -ne 0 -o $var2 -gt 2] #逻辑或-o

文件系统相关测试

可以使用不同的条件标志测试不同的文件系统相关的属性

[ -f $file_var ]:如果给定的变量包含正常的文件路径或文件名,则返回真

[-x $var]:如果给定的变量包含的文件可执行,则返回真

[-d $var]:如果给定的变量包含的是目录,则返回真

[-e $var]:如果给定的变量包含的文件存在,则返回真

[-c $var]:如果给定的变量包含的是一个字符设备文件的路径,则返回真

[-b $var]:如果给定的变量包含的是一个块设备文件的路径,则返回真

[-w $var]:如果给定的变量包含的文件可写,则返回真

[-r $var]:如果给定的变量包含的文件可读,则返回真

[-L $var]:如果给定的变量包含的是一个符号链接,则返回真

使用方法:

fpath="/etc/passwd"

if [ -e $fpath ]; then

echo File exists;

else

echo Does not exits;

fi

字符串比较

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

可以使用下面的方法检测两个字符串,看看他们是否相同

a、[[ $str1 = $str2]]:相等时,返回真。注意在等号前后各有一个空格

b、[[ $str1 == $str2]]:这是检测字符串是否相等的另一种写法

c、[[ $str1 != $str2]]:不同时,返回真。

还可以检查字符串的字母序情况,

[[ $str1 > $str2]]:如果前者的字母序大于后者,则返回真

[[ $str1 < $str2]]:如果前者的字母序小于后者,则返回真

[[ -z $str1 ]]:如果str1包含的是空字符串,则返回真。

[[ -n $str1 ]]:str1为非空字符串时,返回真。

使用逻辑&&和||将多个条件组合起来。

test命令可以用来执行条件检测。用test可以避免使用过多的括号。

如:

if [ $var -eq 0 ]; then echo "TRUE";fi

也可以写成:

if test $var -eq 0;then echo "True";fi

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:alpha-beta filter
下一篇:卫星导航系统-第2讲-卫星导航基础知识-2
相关文章

 发表评论

暂时没有评论,来抢沙发吧~