bash中的算数运算和条件测试语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash中的算数运算和条件测试语句相关的知识,希望对你有一定的参考价值。

一、bash中的算术运算

    1.bash中的算数运算符

        常用的基本算数运算符:+,-,*,/,%,**

增强型算术运算符:+=,-=,*=,/=,%=

特殊的增强型算数运算符:++,--

    

    2.算术运算方法

        

        1)$[expression]

    其中的表达式可以是纯数字组成,也可以使用变量引用变量值;在使用变量时,可以将$省略


        示例:

技术分享图片

                技术分享图片

2)let VAR=EXPRESSION

    根据算数表达式完成算术运算并赋值给指定的变量


        示例:

            技术分享图片


3)$((EXPRESSION))


        示例:

            技术分享图片


4)expr ARGUMENT1 ARGUMET2 ARGUMENT3

    其中ARRGU1和ARGU3必须是整数数值;ARGU2是算数运算符;


        示例:

            技术分享图片


5)echo "EXPRESSION" | bc


        示例:

            技术分享图片


6)bc <<< "EXPRESSION"


        示例:

            技术分享图片


二、bash中的条件测试语句

    1.条件测试命令:

        test EXPRESSION 等价于 [ EXPRESSION ], 此为bash的内建命令

        另外[[ EXPRESSION ]]:bash的内建命令,一般用于某些特定结构或者格式之中

    

    2.数值测试(双目操作):

        -eq  测试两个数值是否相等,相等为真,不等为假  

        -ne  测试是否不等,不等为真

-lt  测试是否小于,小于为真

-gt  测试是否大于

-le  测试是否小于等于

-ge  测试是否大于等于


        示例:

            技术分享图片


           

    3.字符串测试

    双目测试:      

        ==|= 测试两个字符串是不是相同的字符串,相同为真

!= 测试两个字符串是否不同,不同为真

> 测试左边的字符串所对应的ASCII编码是否比右边的大

< 测试左边的字符串所对应的ASCII编码是否比右边的小

=~ 左边是字符串,右边是PATTERN,测试左边是否能被右边匹配,能匹配为真

注意:<、>、=~三类操作符只能用在[[  ]]里面的表达式

    

    

    单目测试

-z 'STRING' 测试是否为空串,空为真

-n 'STRING' 测试是否不是空串,不空为真


    示例:

        技术分享图片


    3.文件测试        

        -a|-e 测试文件是否存在,存在为真

-b 测试文件是否存在且为块设备文件

-c  测试文件是否存在且为字符设备

-d  测试目录是否存在

-f  测试文件是否存在且为普通文件

-h|L   测试文件是否存在且为符号链接文件

-s  测试文件是否存在且其大小大于0,否则为假

-S  测试文件是否存在且为套接字文件

-t FD:测试文件描述符是否在终端上被打开,被打开为真


    文件访问权限测试

-r  文件存在且当前用户被授予写权限

-w

-x


    文件特殊权限测试

-u  测试文件是否设置了SUID

-g  测试文件是否设置了SGID

-k  测试文件是否设置了STICKY


    文件所有权测试

-O  测试文件是否存在且其属主是否为当前有效用户

-G  测试文件是否存在且其属组是否为当前有效用户的所在组


    双目测试

-ef 判断两个文件是否为同一个文件(拥有相同的Inode编号),即:两个文件是否互为硬连接

-nt 是否比后一文件新(修改时间戳)

-ot 是否比后一文件老


    示例:

        技术分享图片


    4.在测试语句中添加逻辑运算符号

        bash的运算逻辑符号:[ EXPRESSION ] && [ EXPRESSION ]

        条件测试命令本身的逻辑运算符号:

           [ expression1 -a expression2 ]

    [ expression1 -o expression2 ]

    [ ! expression1 ]

    示例:

        技术分享图片


    5.命令的执行结果

1)命令的正常输出结果

2)命令的执行状态返回值

    0-255

    0:命令成功执行或判断为真

    1-255:表示命令执行失败或判断为假

1,2,127:系统默认保留的

其余为用户自定义的命令执行状态返回值

    

        示例:

            技术分享图片

            技术分享图片

            


以上是关于bash中的算数运算和条件测试语句的主要内容,如果未能解决你的问题,请参考以下文章

bash的算术运算和条件测试语句

shell脚本从入门到复杂六(条件判断和算数运算)

bash的算术运算和条件测试方法

Shell-条件测试和判断语句

Shell-条件测试和判断语句

bash的算术运算和条件测试语句