Shell if 条件判断

一、if的基本语法

参考:Shell if else语句(详解版)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值