【参考】菜鸟教程、Linux中编写Shell脚本、linux 的基本操作(编写shell 脚本)
shell中常见的算术运算符
shell中常见的算术运算命令
(()) 的作用是进行数值运算与数值比较,它的效率很高,用法灵活,是Linux下常用的运算操作符。其操作方法如下:
let运算命令的语法格式为: let 赋值表达式 。let 赋值表达式的功能等同于“((赋值表达式))” 范例: 给变量 i 加8
let i = i + 8
expr可用于运算也可用于计算字符串长度
#直接加表达式
expr 2 + 2
#可以配合变量进行计算,但外层需要添加反引号
i=`expr &i + 5`
#求字符串的长度
str="hello"
expr length "$str"
test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
bc是linux下的一个计算器
[]符号也可用于算术运算
i=$[2+3] echo $i
文件操作测试符
常用文件测试操作符及其全拼 | 说明 |
-d (directory) | 文件存在且为目录则为真 |
-f (file) | 文件存在且为文件则为真 |
-e (exists) | 文件存在则为真 |
-s (size) | 文件存在且大小不为0则为真 |
-r (read) | 文件存在且可读则为真 |
-w (write) | 文件存在且可写则为真 |
-x (executable) | 文件存在且可执行则为真 |
-L (link) | 文件存在且为链接文件则为真 |
f1 -nt f2 (newer than) | 文件f1比文件f2新则为真 |
f1 -ot f2 (older than) | 文件f1比文件f2旧则为真 |
字符串操作符
常用字符串测试操作符 | 说明 |
-n | 若字符串长度不为0,则为真 |
-z | 若字符串长度为0,则为真 |
“字符串1” == “字符串2” | 若字符串1等于字符串2,则为真 |
“字符串1” != “字符串2” | 若字符串1不等于字符串2,则为真 |
整数二元比较操作符
在[]以及test中使用的比较符号 | 在(())和[[]]中使用的比较符号 | 说明 |
-eq | == 或 = | 相等,全拼为 equal |
-ne | != | 不相等,全拼为 not equal |
-gt | > | 大于,全拼为 greater than |
-ge | >= | 大于等于,全拼为 greater equal |
-lt | 小于,全拼为 less than | |
-le | 小于等于 ,全拼为less equal |
逻辑操作符
在[]和test中使用的操作符 | 在[[]]和(())中使用的操作符 | 说明 |
-a | && | and ,与,两端都为真,才为真 |
-o | || | or ,或, 两端有一个为真,就为真 |
! | ! | not ,非, 两端相反,则结果为真 |
操作符之间的区别
测试表达式符号 | test | [] | [[]] | (()) |
边界是否需要空格 | 需要 | 需要 | 需要 | 不需要 |
逻辑操作符 | ! 、-a、 -o | ! 、-a、 -o | ! 、&& 、 || | ! 、&& 、 || |
整数比较操作符 | -eq 、 -gt 、-lt、-ge 、-le | -eq 、 -gt 、-lt、-ge 、-le | -eq 、 -gt 、-lt、-ge 、-le 或 = 、> 、< 、 >= 、 | = 、> 、< 、 >= 、 |
字符串比较操作符 | = 、 == 、!= | = 、 == 、!= | = 、 == 、!= | 不支持 |
文件操作 | -d、-f、-e、-r、-s、-w、-x、-L、 -nt、-ot | -d、-f、-e、-r、-s、-w、-x、 -L、-nt、-ot | -d、-f、-e、-r、-s、-w、-x、-L、-nt、-ot | 不支持 |
是否支持通配符匹配 | 不支持 | 不支持 | 支持 | 不支持 |