欢迎使用CSDN-markdown编辑器

if-then-else 命令详解

命令结构

if command;then  

    commands
else
    commands
fi

或者

if commands;then  
    commands
elif 
    commands
else
    commands
fi

if 条件

从上述结构中可以看出 if的条件为command,当command成功执行会返回状态码0,则会执行if下面的commands,then并不会执行;否则则会执行0;因此可以轻松判断自己的脚本是否成功执行。但是 如何执行普通的条件呢?shell 则提供了 test命令

if test condition
then
    commands
else
    commands
fi

或者

if [condition]
then
    commands
else
    commands
if  

看起来写脚本也挺简单的嘛!NO!! 条件中可不是简单大于小于号,仅这些比较符号记住都得恶心死;往下看

数值比较

比较运算符描述
-eq等于
-ge大于等于
-gt大于
-le小于等于
-lt小于
-ne不等于

看了上面的东西是不是感觉挺恶心的?那有没有简单点的表达式呢?
福音来了!双圆括号:((expression))
可以支持正常数字的运算和比较!

if ((expression))
then
    commands;
else
    commands;
fi

字符串比较

字符串的比较相对来说可读性较强,但有一点让人比较难接受 (>,<要转义)

比较运算符描述
[ str1= str2]相等
[ str1!= str2]不等
[ str1&amp;amp;amp;amp;amp;amp;amp;lt; str2]小于
[ st1> str2]大于
[-n $str1]不为空
[-z $str1]
[[$str1=”r*”]]正则匹配

文件比较

在写脚本的时候也很重要,这么多参数,我可记不住

判断描述
-d file是否存大路径
-e file是否存在
-f file是否存在并是文件
-r file是否可读
-s file可读并不为空
-w file可写
-x file可执行
-O file为当前用户拥有
-G file是否和用户同组
file1 -nt file2file1 比file2 新
file1 -ot file2file1 比file2 旧

复合条件

if []&&,|| []
then
    commands
else
    commands
fi

case 表达式

如果if 写烦了,可以考虑case表达式
case 在字符串比较时支持正则

case $str in
    $str1 | $str2)
        commands
    $str3)
        commands
    *)
        commands
esac
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值