目录

Shell表达式与运算符

只用于数值比较

该类型的操作会把两边的的变量变成整形加法运算,字符串abcd无法按整形进行运算,所以以下操作符不能用于字符串比较.

参数 说明
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真

字符串比较,也可以用于数值比较

参数 说明
== 相等则为真
!= 不相等则为真

字符串测试运算

参数 说明
-z 字符串 字符串的长度为零则为真
-n 字符串 字符串的长度不为零则为真

文件测试运算

参数 说明
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真
  • if语句中,数值比较的写法是if [ $var1 -ge $var2 ];字符串比较的写法是if [ “$var1” != “$var2” ],其中加双引号只是兼容$var2处为空的情况

  • 在各种运算中,test命令的运算和中括号是等效的

  1. #!/bin/bash
  2. A=10
  3. B=30
  4. if test $A -gt $B;then
  5. echo "A大于B"
  6. else
  7. echo "A小于B"
  8. fi
  9. C=40
  10. D=50
  11. if test $A -lt $B && test $C -lt $D;then
  12. echo "A大于B且C大于D"
  13. fi
  • 赋值时等号两边没空格,比较或测试时运算符两边都要有空格

  • shell默认是字符运算,如果想当数值进行运算要在前边加上expr,如:var3=expr $var1 + $var2(注意运算符+两边一定要加空格)

原文链接:https://rumenz.com/shell/shell-expressions-and-operators.html
↑回到顶部↑
入门小站 @2018