一、if的基本语法
if 语句
if condition; then
statement(s)
fi
请注意 condition 后边的分号;,当 if 和 then 位于同一行的时候,这个分号是必须的,否则会有语法错误。
示例
#!/bin/bash
read a
read b
if (( $a == $b ))
then
echo "a和b相等"
fi
if else 语句
如果有两个分支,就可以使用 if else 语句,它的格式为:
if condition
then
statement1
else
statement2
fi
示例
#!/bin/bash
read a
read b
if (( $a == $b ))
then
echo "a和b相等"
else
echo "a和b不相等,输入错误"
fi
if elif else 语句
if condition1
then
statement1
elif condition2
then
statement2
elif condition3
then
statement3
……
else
statementn
fi
或者
if [ command ];then
符合该条件执行的语句
elif [ command ];then
符合该条件执行的语句
else
符合该条件执行的语句
fi
示例
#!/bin/bash
read age
if (( $age <= 2 )); then
echo "婴儿"
elif (( $age >= 3 && $age <= 8 )); then
echo "幼儿"
elif (( $age >= 9 && $age <= 17 )); then
echo "少年"
elif (( $age >= 18 && $age <=25 )); then
echo "成年"
elif (( $age >= 26 && $age <= 40 )); then
echo "青年"
elif (( $age >= 41 && $age <= 60 )); then
echo "中年"
else
echo "老年"
fi
二、文件/文件夹(目录)判断
https://blog.csdn.net/zhan570556752/article/details/80399154
三、字符串判断
[ -z STRING ] 如果STRING的长度为零则为真 ,即判断是否为空,空即是真;
[ -n STRING ] 如果STRING的长度非零则为真 ,即判断是否为非空,非空即是真;
[ STRING1 = STRING2 ] 如果两个字符串相同则为真 ;
[ STRING1 == STRING2 ] 如果两个字符串相同则为真 ;
[ STRING1 != STRING2 ] 如果字符串不相同则为真 ;
[ STRING1 ] 如果字符串不为空则为真,与-n类似
四、数值判断
[ INT1 -eq INT2 ] INT1和INT2两数相等为真 ,=
[ INT1 -ne INT2 ] INT1和INT2两数不等为真 ,<>
[ INT1 -gt INT2 ] INT1大于INT1为真 ,>
[ INT1 -ge INT2 ] INT1大于等于INT2为真,>=
[ INT1 -lt INT2 ] INT1小于INT2为真 ,<
[ INT1 -le INT2 ] INT1小于等于INT2为真,<=
注意,test 只能用来比较整数,小数相关的比较还得依赖 bc 命令。
优先使用(())的方式。
Shell (()):对整数进行数学运算
http://c.biancheng.net/view/2480.html
五、复杂逻辑判断
六、举例
七、shell if [[ ]]和[ ]区别 || &&
[]和test
两者是一样的,在命令行里test expr和[ expr ]的效果相同。
test的三个基本作用是判断文件、判断字符串、判断整数。支持使用 ”与或非“ 将表达式连接起来。
[[ ]]
这是内置在shell中的一个命令,它就比刚才说的test强大的多了。支持字符串的模式匹配(使用=~操作符时甚至支持shell的正则表达 式)。逻辑组合可以不使用test的-a,-o而使用&& ||。
有了 [[ ]],你还有什么理由使用 test 或者 [ ],[[ ]] 完全可以替代之,而且更加方便,更加强大。
但是 [[ ]] 对数字的比较仍然不友好,所以我建议,以后大家使用 if 判断条件时,用 (()) 来处理整型数字,用 [[ ]] 来处理字符串或者文件。
Shell test命令(Shell [])详解,附带所有选项及说明
http://c.biancheng.net/view/2742.html
Shell [[]]详解:检测某个条件是否成立
http://c.biancheng.net/view/2751.html
Shell (()):对整数进行数学运算
http://c.biancheng.net/view/2480.html
Shell let命令:对整数进行数学运算
http://c.biancheng.net/view/2504.html
参考资料
Shell if else语句(详解版)
http://c.biancheng.net/view/1262.html
Shell if 条件判断
https://blog.csdn.net/zhan570556752/article/details/80399154