携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第31天,点击查看活动详
算数运算符
+ - * / %
加减乘除 取余
以下四种都可以进行运算操作,但是都不能进行浮点数运算
$[]
$[1+2] $[$a+3]
$(()) # 和$[]使用方式一样
expr # 注意运算符两侧一定要有空格,没有空格就不会进行运算
expr $q + 1
expr 3 * 10 # 乘法,*有特殊意义,因此需要\进行转义
let
$age=18
age=$[$age+1]
# 上述两行代码等价于下述操作
let age=age+1 # 也可以写成age+=1
let i++ # 如果i不存在,i会变成1,如果存在就是i的值自增1
let ++i # 和i++效果相同
# ++在前和在后的区别
let x=m++ # x=0 m=, 首先将m的值赋值给x,然后m进行加1操作
let y=++n # y=1 n=1
测试运算符
测试命令:test
测试符号:[],注意两侧必须有空格
test命令和中括号的效果一致,参数也是一致的
文件测试
-d 目录
test -d /etc ; echo $? # 测试是否是目录或者是否存在
[ -d /etc ] ; echo $?
-s 文件长度大于0
[ -s /etc/passwd ] ; echo $?
-f 标准文件
[ -f /etc/passwd ]
-w 当前用户对文件是否有写权限
-r 当前用户对文件是否有读权限
-x 当前用户对文件是否有执行权限
-L 判断是否是软连接或者硬链接文件
字符串测试
-n 测试字符串的长度是否为0
[ -n $变量名]
x=""
[ -n "${x}" ] ; echo $? # 注意一定要上引号
= 判断两个字符串是否相等
!= 判断两个字符串是否不相等
[root@VM-4-2-centos ~]# x="abc"
[root@VM-4-2-centos ~]# y="bcd"
[root@VM-4-2-centos ~]# [ "${x}" = "${y}" ]; echo $?
1
[root@VM-4-2-centos ~]# [ "${x}" != "${y}" ]; echo $?
0
数值测试
-eq 判断数值是否相等
[ 10 -eq 10 ]; echo $?
-gt 判断大于
-lt 判断小于
-ge 判断大于等于
-le 判断小于等于
-ne 判断不等于
其他测试
-a 表示and
[ 10 -eq 10 -a 11 -lt 9] 等价于 [ 10 -eq 10 ] && [ 11 -lt 9 ]
-o 表示或者,等价于连接命令的 || ,前一个命令失败才执行后面的命令
关系运算符
如果想使用< > >= <= == !=
这样的关系运算符,就不能使用[]
test测试符,使用(())
即可。但是当有多个条件时只能使用&& ||
[root@VM-4-2-centos ~]# (( 10 == 11 ));echo $?
1
[root@VM-4-2-centos ~]# (( 10 == 1 )) || (( 1 == 1 )); echo $?
0
赋值运算符
除了赋值符号意外,其他的赋值运算符也需要在(())
中编写
=:赋值
a=18
+=
((age+=10))
-=
*=
/=
%=