Linux Shell基本运算符

shell基本运算符:

  • 算术运算符
  • 关系运算符
  • 布尔运算符
  • 字符串运算符
  • 文件测试运算符
    注:原bash不支持简单的数学运算。但可以通过awk 和expr(常用)命令来实现。
    expr是一款表达式计算工具,它可以完成表达式的求值操作。
    例:
#两个数相加使用的是反引号
val =`expr 2 + 2`
echo "$val"
结果:4
注:
 - 表达式和运算符之间要有空格。
 - 完整的表达式要被 ` `(反引号)包括。

算术运算符
假设变量a为10,b为20

运算符 举例
+ expr $a + $b 结果30
- expr $a - $b 结果-10
* expr $a \* $b 结果 200
/ expr $b / $a结果 2
% expr $b % $a结果0
= a=$b将变量b赋值给a
== [ $a == $b ] 返回false
!= [ $a != $b ] 返回true
注:条件表达式要放在方括号之间,并且要有空格。
乘号* 前边必须加反斜杠\ 才能进行乘法运算。

关系运算符
关系运算符只支持数字,不支持字符串,除非字串的值是数字。
假定变量a为10,b为20.

  1. -ep : 检测两个数是否相等,相等返回true.
    例:[ $a -eq $b ] 返回false

  2. -ne : 检测两个数是否不相等。
    例: [ $a -ne $b ] 返回true

  3. -gt 相当于 >
    例:[ $a -gt $b ] 返回false

  4. -lt 相当于 <
    例:[ $a -lt $b ] 返回true

  5. -ge 相当于 >=
    例:[ $a -ge $b ] 返回false

  6. -le 相当于 <=
    例:[ $a -le $b ] 返回false

布尔运算符

假定变量a 、b值如上

  1. ! 非运算

    例: [ !false ] 返回true

  2. -o 或运算

    例: [ $a -lt 20 -o $b -gt 100 ] 返回true

  3. -a 与运算

    例: [ $a -lt 20 -a $b -gt 100 ] 返回false

逻辑运算符
假定变量a为10,b为20

  1. && 逻辑运算符 AND

    例:[[ $a -lt 100 && $b -gt 100 ]] 返回false

  2. || 逻辑的OR

    例: [[ $a -lt 100 || $b -gt 100 ]] 返回true

字符串运算符
假定变量a为”abc“, 变量b为”efd“

  1. =(!=) 检测两个字符串是否相等。
    例:

    [ $a = $b ] 返回false
    [ $a != $b ] 返回true

  2. -z 检测字符串长度是否为0,为0为返回true。

    例: [ -z $a ] 返回false

  3. -n 检测字符串长度是否为0,不为0,返回true 。

    例: [ -n “$a”] 返回true

  4. str 检测字符串是否为空,不为空返回true.

    例: [ $a ] 返回true

文件检测运算符
文件检测运算符用于检测unix文件的各种属性。
-b file 检测文件是否是块设备文件,是则返回true

例: [ -b $file ] 返回flase

-c file 检测文件是否是字符设备文件,是返回true

例: [ -c $file ] 返回false

-d file 检测文件是否是目录,如果是,则返回true.

例: [ -d $file] 返回false

-f file 检测文件是否是普通文件,是返回true

例: [ -f $file ] 返回false

-g file 检测文件是否设置了SGID(set group id)位,如果是,返回true.

例: [ -g $file ]    false

-k file 检测文件是否设置粘着位 (Sticky Bit),是返回true

例: [ -k $file ]  false

-p file 检测文件是否是有名管道,是返回true

例:  [ -p $file ]   false

-r /-w /x file 检测文件是否可读/可写/可执行。是返回true.

例:  [ -r/-w/-x $file ]  false

-s file 检测文件是否为空(及文件大小是否大于0),不为空true.

例: [ -s $file ] true

-e file 检测文件(目录)是否存在,是返回true

例: [ -e $file ]  true

你可能感兴趣的:(linux,shell)