您的位置:首页 > 运维架构 > Shell

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

2017-11-24 20:01 295 查看
一、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 算术运算