我们一般使用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