2.7 Shell运算符
Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
2.7.1 算数运算符
val=`expr 2 + 3` echo "2+3 is ${val}" var2=`expr 3 \* 2` echo "3*2 is ${var2}" var4=10 var5=20 if [ ${var4} != ${var5} ] then echo "var4 is not equals var5" fi
通过上面的代码可以看出,在通过Shell进行算数运算时,需要注意以下几点:
- 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
- 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。
- 乘号(*)前边必须加反斜杠(\)才能实现乘法运算。
- 条件表达式要放在方括号之间,并且要有空格,例如 [$a==$b] 是错误的,必须写成 [ $a == $b ]。
常用的算数运算符如下:
2.7.2 关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
a=23 b=2 if [ ${a} -le ${b} ] then echo "a is less or equals to b" else echo "a is greater than b" fi
常用关系运算符如下:
2.7.3 布尔运算符
布尔运算符用于多个条件的连接。
a=23 b=2 if [ ${a} -le 23 -o ${b} -gt 23 ] then echo "23<=23 || 2>23 true will echo..." else echo "23<=23 || 2>23 not true" fi
常用布尔运算符如下:
2.7.4 字符串运算符
a="hello" if [ -z ${a} ] then echo "-z ${a} : string length is zero" else echo "-z ${a} : string length is not zero" fi
常用的字符串运算符如下:
2.7.5 文件测试运算符
file="/mnt/hhh.txt" if [ -e ${file} ] then echo "File exists" else echo "File does not exist" fi
常用的文件测试符如下:
2.8 注释
2.8.1 单行注释
单行注释在行首用 “#”来表示该行为注释。
#我是单行注释
2.8.2 多行注释
Shell的多行注释比较特殊,格式为“:<<! ···内容··· !”。注意:不是“# 内容 #”的格式。
:<<! file="/mnt/hhh.txt" 我是多行注释 !