算数运算符

算数运算符 + - * / % = == !=,可使用expr 表达式进行求值操作

  1. #!/bin/bash
  2. val=`expr 2 + 2`
  3. echo "两数之和:$val"
  4. a=10
  5. b=20
  6. val=`expr $a + $b`
  7. echo "两数相加:$val"
  8. val=`expr $a - $b`
  9. echo "两数相减:$val"
  10. val=`expr $b / $a`
  11. echo "两数相除:$val"
  12. # 乘号(*)前边必须加反斜杠(\)转义才能实现乘法运算
  13. val=`expr $b \* $a`
  14. echo "两数相乘:$val"
  15. val=`expr $a % $b`
  16. echo "a与b取余 :$val"
  17. # 条件表达式要放在方括号之间,并且要有空格
  18. if [ $a == $b ]
  19. then
  20. echo "a == b"
  21. fi
  22. if [ $a != $b ]
  23. then
  24. echo "a != b"
  25. fi
  26. :<<!
  27. 两数之和:4
  28. 两数相加:30
  29. 两数相减:-10
  30. 两数相除:2
  31. 两数相乘:200
  32. ab取余 :10
  33. a != b
  34. !

关系运算符

-eq:等于
-ne:不等于
-gt:大于
-lt:小于
-ge:大于等于
-le:小于等于

  1. a=10
  2. b=20
  3. if [ $a -eq $b ]
  4. then
  5. echo "$a -eq $b a == b"
  6. else
  7. echo "$a -eq $b a != b"
  8. fi
  9. if [ $a -ne $b ]
  10. then
  11. echo "$a -ne $b a != b"
  12. else
  13. echo "$a -ne $b a == b"
  14. fi
  15. if [ $a -gt $b ]
  16. then
  17. echo "$a -gt $b a > b"
  18. else
  19. echo "$a -gt $b a < b"
  20. fi
  21. :<<!
  22. 10 -eq 20 a != b
  23. 10 -ne 20 a != b
  24. 10 -gt 20 a < b
  25. !

布尔运算符

!: 非运算
-o: 或运算
-a: 与运算

  1. a=11
  2. b=12
  3. if [ $a -gt 1 -o $b -gt $a ]
  4. then
  5. echo "b == $b"
  6. else
  7. echo "a == $a"
  8. fi
  9. :<<!
  10. b == 12
  11. !

逻辑运算符

&& 逻辑and
|| 逻辑or

  1. a=12
  2. b=13
  3. if [[ $a -lt 100 && $b -gt 100 ]]
  4. then
  5. echo "返回 true"
  6. else
  7. echo "返回 false"
  8. fi
  9. if [[ $a -lt 100 || $b -gt 100 ]]
  10. then
  11. echo "返回 true"
  12. else
  13. echo "返回 false"
  14. fi
  15. :>>!
  16. 返回 false
  17. 返回 true
  18. !

字符串运算符

=: 检测两个字符串是否相等
!=: 检测两个字符串是否不相等
-z: 检测字符串长度是否为0
-n: 检测字符串长度是否不为0
$: 检测字符串是否为空

  1. if [ "aaa" = "bbb" ]
  2. then
  3. echo "aaa == bbb "
  4. else
  5. echo "aaa != bbb"
  6. fi
  7. if [ "aaa" != "bbb" ]
  8. then
  9. echo "aaa != bbb"
  10. else
  11. echo "aaa == bbb"
  12. fi
  13. a="aaaa"
  14. if [ -z $a ]
  15. then
  16. echo "-z $a : 字符串长度为 0"
  17. else
  18. echo "-z $a : 字符串长度不为 0"
  19. fi
  20. if [ -n $a ]
  21. then
  22. echo "-n $a: 字符串长度不为0"
  23. else
  24. echo "-n $a: 字符串长度为0"
  25. fi
  26. if [ $ ]
  27. then
  28. echo " $ '' : 检测字符串为空"
  29. else
  30. echo "$ 检测字符串不为空"
  31. fi

文件测试运算符

-d: 检测文件是否是目录
-f:检测文件是否是普通文件
-r: 检测文件是否可读
-w: 检测文件是否可写
-x: 检测文件是否可执行
-s: 检测文件是否为空
-e: 检测文件是否包含目录

  1. #!/bin/bash
  2. filename="$0"
  3. # filename="/var/www/runoob/test.sh"
  4. echo "打印文件名:$filename"
  5. if [ -d $filename ]
  6. then
  7. echo "这是目录"
  8. else
  9. echo "这不是目录"
  10. fi
  11. if [ -f $filename ]
  12. then
  13. echo "this is ordinary file"
  14. else
  15. echo "this is not ordinary file"
  16. fi
  17. if [ -r $filename ]
  18. then
  19. echo "file is readable"
  20. else
  21. echo "file is unreadable"
  22. fi
  23. if [ -w $filename ]
  24. then
  25. echo "file is writable"
  26. else
  27. echo "file is not writable"
  28. fi
  29. if [ -x $filename ]
  30. then
  31. echo "file is executable"
  32. else
  33. sudo chmod +x $filename
  34. ls -l $filename
  35. fi
  36. if [ -s "$filename" ]
  37. then
  38. echo "file is not empty"
  39. else
  40. echo "file is empty"
  41. fi
  42. if [ -e "$filename" ]
  43. then
  44. echo "There are directories for files"
  45. else
  46. echo "There are no directories for files"
  47. fi