shell中的条件控制语句

先说一下背景,之前在网上看到很多关于shell的文章,很多都会误导人,可能作者懂了,但很多shell语句贴在博客上的都是作者们未实际验证的语句,会给新人很多误导。

好了,正题来了。

先说一下,我是android开发出身,在工作中需要用到shell脚本做一些自动化工具,所以有了这个shell语法的学习需求

首先说一下shell语法中和java这些高级语言的区别

shell(低级语言,很变态,但又不得不学,因为兼容性好,兼容也是为了兼容win、mac和linux)。shell中空格很重要,在语句里,关键词和分隔符加空格和不加空格的逻辑很可能完全是天差地别,所以谨慎而为,各位!

以下是我的一些使用经验吧,也是初学,大家共勉!

if...else逻辑控制语句

格式:

# 赋值操作,切忌赋值时=号前后无空格,有空格的就是字符串的相等判断了
b=4
a=3 
c=5
# 下面就是逻辑判断语句了
if [ $a -gt $b ]
then # 注意这里要有个then
    echo 'a 大于 b'
elif [ $a -gt $c ] # 注意shell中的elseif要缩写成elif
then # 注意这里还必须要有then
    echo 'a 大于 c'
else  # 注意这时就不需要then了
    echo 'a即不大于b也不大于c'
fi

上面的逻辑判断语句条件也可以写成

if ((a>b)) # 和上面类似的是这里左小括号也必须和if关键字之间用空格分开, 不同的是,里面的大于小于号可以直接用><,而一定不能用-gt或-lt来转义了,变量使用也不必须使用$符来取了,变量和逻辑操作符之间也不非得用空格了,可以理解为(())双括号把判断逻辑转义过了,不必再用转议语法了
then 
    echo 'a 大于 b'
elif (($a > $c))
then 
    echo 'a 大于 c'
else
    echo 'a即不大于b也不大于c'
fi

如果有多个判断条件则可以写为:

if ((a>b)) && ((a>c))
then 
    echo 'a大于b,并且a大于c'
fi

也可以写为转义形式

if [[ $a -gt $b ]] && [[ $a -gt $c ]]
then 
     echo 'a大于b,并且a大于c'
fi

或者

if [ $a -gt $b -a $a -gt $c ] # -a表示and,-o表示or,注意这里是一层中括号
then 
     echo 'a大于b,并且a大于c'
fi

把上面语句写成一行吧,tips,shell中可以用 ; 来分隔多个语句

if ((a>b)) && ((a>c));then echo 'a大于b,并且a大于c';fi

可以看到shell中的语句分隔情况是怎么样的

以上代码均在mac系统zsh终端实际验证过,放心食用!

大家有推荐的可以阅读的shell书籍也可以在评论区推荐一下!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值