我们一般使用if if-else这种方式来执行逻辑判断,当然,还有一些其他的运算符

if条件

if condition;

then

commands;

fi

else if 或者else

if condition;

then

commands

else if condtion;

then

commands

else

commands

fi

因为判断逻辑会变的很长,所以可以用逻辑运算符将其变得简洁些

[ condition ] && action 如果condition为真.执行后面的action动作

[ condition ] || action 如果condition为假,执行action动作

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

算术比较

对变量或者值进行条件判断

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

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

常见的操作符有

-gt 大于

-lt 小于

-ge 大于或者等于

-le 小于或者等于

在一个表达式之中可以进行逻辑与或者或的运算

[ $var -ne 0 -a $var1 -gt 2] 逻辑与

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

文件相关的测试

在测试中,可以对文件系统进行一些测试,只需要一些前缀条件即可

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

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

[ -d $file ]如果给定的变量包含的是目录.则是真的

[ -e $file ]如果给定的变量文件是存在的.则是真的

[ -c $file ]如果给定的变量是字符设备文件的路径.则是真的

[ -b $file ]如果给定的变量包含的是块设备文件的路径.则是真的

[ -w $file ]如果给定的变量文件是可写的.则是真的

[ -r $file ]如果给定的变量包含的文件可读.则是真的

[ -L $file ]如果给定的变量是一个符号链接.则是真的

常用方式如下

if [ -e “/etc/passwd” ];

then

echo “File is exists”

fi

字符串的比较

在进行字符串的比较的时候,最好是双中括号的方式,因为单中括号可能出现错误

[[ $str1 = $str2 ]] 判断是否字符串一致

[[ $str1 == $str2 ]]另一种常见写法

其中可以替换为 > < 从而判断字母序是否相同

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

[[ -n $str1 ]] 如果str1包含的字符串非空,则返回真

并且在其中,可以使用&&和||将条件组合起来

if [[ -n $str1 ]] && [[ -z $str2 ]];

then

commands;

fi

或者使用test命令,可以用来执行条件检测,避免过多的括号问题

if [ $var -eq 0 ];

then

echo “True”;

fi

发表评论

邮箱地址不会被公开。 必填项已用*标注