4.Shell中的条件测试

关于shell中的变量类型:
    默认bash中的变量我们是不需要关注是什么类型的,我们进行两个变量的条件测试时一般不需要关注它的类型
    除了这种a='haha: 0' b=1    明显a变量中的值很复杂,有特殊符号,还有数字,那此时[]的条件测试就不满足了,就需要[[]]去测试才可以
    不是这种数值很复杂的变量,则不需要特别注意变量类型

————————————————————————————————————————————————————————————————————————————————————    

逻辑判断:
    前面的命令执行后的状态是否为0,如果为0继续执行后面的命令:&&
        [ $USER == root ] && echo $HOME

    前面的命令执行后的状态是否非0,如果非0继续执行后面的命令:||
        [ $USER == shy ] || echo $HOME    
        
        如果多个&&和||相结合的话,只判断前面是否成功,比如
        [ $USER == "shy" ] || echo 123 && echo 456
        此时123 456都会输出

    在bash中,如果一个变量是纯字符串类型的,比如:
        a=haha
        b=haha
        [ $a == $b ];echo $?        
            #这里就会报错,因为对于字符串比较,应使用双方括号[[ $a == $b ]]。
            #双括号允许使用 == 和 != 来进行字符串的比较,而单方括号 [ ] 只支持通过特定的运算符进行数值或文件属性的比较。
    
————————————————————————————————————————————————————————————————————————————————————    


条件测试:使用[]里面用测试符

    字符串比较测试:
        不管是数字还是字符都能进行测试
        -z:字符串或者变量的值如果为空,则为真即$?=0
        -n:字符串或者变量的值如果存在,则为真
            例:
                [ -z $PATH ];echo $?
                [ -z $PATH ];echo $?
                [ -n $PATH ];echo $?
        ==:字符串完全一致为真
            如果是两个存储了字符串的变量进行比较的话,需要[[]]]进行比较才行,要是俩变量都是数值型的就可以用[]比较
        !=:字符串不完全一致为真
            例:
                [ $USER == "root" ];echo $?
                #被比较的应该加上"",如果没有空格的话可以不加
            

    文档状态的测试:
        -e:文档存在为真
            例如:
                [ -e /opt/test.sh ]
        -d:文档存在,且是目录为真
        -f:文档存在,且是文件为真
        -r:文档存在,且有可读权限为真
        -w:文档存在,且有可写权限为真
        -x:文档存在,且有可执行权限为真
            例:
            [ -e /etc ];echo $?         #测试/etc存在是否为真
        
    比较整数大小的测试:
        -gt:大于
        -ge:大于等于
        -eq:等于
        -ne:不等于
        -lt:小于
        -le:小于等于    
            例:
            [ 1 -eq $a ];echo $?
        

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值