查看: 1608|回复: 0
打印 上一主题 下一主题

Shell if else语句

[复制链接]
跳转到指定楼层
沙发
发表于 2014-8-15 09:37:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lucky80204 于 2014-8-15 09:40 编辑

if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if ... else 语句:
if ... fi 语句;
if ... else ... fi 语句;
if ... elif ... else ... fi 语句。
1) if ... else 语句

if ... else 语句的语法:
  1. if [ expression ]
  2. then
  3.    Statement(s) to be executed if expression is true
  4. fi
复制代码
如果 expression 返回 true,then 后边的语句将会被执行;如果返回 false,不会执行任何语句。

最后必须以 fi 来结尾闭合 if,fi 就是 if 倒过来拼写,后面也会遇见。

注意:expression 和方括号([ ])之间必须有空格,否则会有语法错误。

举个例子:
  1. #!/bin/sh
  2. a=10
  3. b=20
  4. if [ $a == $b ]
  5. then
  6.    echo "a is equal to b"
  7. fi
  8. if [ $a != $b ]
  9. then
  10.    echo "a is not equal to b"
  11. fi
复制代码
运行结果:
  1. a is not equal to b
复制代码

2) if ... else ... fi 语句

if ... else ... fi 语句的语法:
  1. if [ expression ]
  2. then
  3.    Statement(s) to be executed if expression is true
  4. else
  5.    Statement(s) to be executed if expression is not true
  6. fi
复制代码
如果 expression 返回 true,那么 then 后边的语句将会被执行;否则,执行 else 后边的语句。

举个例子:
  1. #!/bin/sh
  2. a=10
  3. b=20
  4. if [ $a == $b ]
  5. then
  6.    echo "a is equal to b"
  7. else
  8.    echo "a is not equal to b"
  9. fi
复制代码
执行结果:
  1. a is not equal to b
复制代码

3) if ... elif ... fi 语句

if ... elif ... fi 语句可以对多个条件进行判断,语法为:
  1. if [ expression 1 ]
  2. then
  3.    Statement(s) to be executed if expression 1 is true
  4. elif [ expression 2 ]
  5. then
  6.    Statement(s) to be executed if expression 2 is true
  7. elif [ expression 3 ]
  8. then
  9.    Statement(s) to be executed if expression 3 is true
  10. else
  11.    Statement(s) to be executed if no expression is true
  12. fi
复制代码
哪一个 expression 的值为 true,就执行哪个 expression 后面的语句;如果都为 false,那么不执行任何语句。

举个例子:
  1. #!/bin/sh
  2. a=10
  3. b=20
  4. if [ $a == $b ]
  5. then
  6.    echo "a is equal to b"
  7. elif [ $a -gt $b ]
  8. then
  9.    echo "a is greater than b"
  10. elif [ $a -lt $b ]
  11. then
  12.    echo "a is less than b"
  13. else
  14.    echo "None of the condition met"
  15. fi
复制代码
运行结果:
  1. a is less than b
复制代码

if ... else 语句也可以写成一行,以命令的方式来运行,像这样:
  1. if test $[2*3] -eq $[1+5]; then echo 'The two numbers are equal!'; fi;
复制代码

if ... else 语句也经常与 test 命令结合使用,如下所示:
复制纯文本新窗口
  1. num1=$[2*3]
  2. num2=$[1+5]
  3. if test $[num1] -eq $[num2]
  4. then
  5.     echo 'The two numbers are equal!'
  6. else
  7.     echo 'The two numbers are not equal!'
  8. fi
复制代码
输出:
  1. The two numbers are equal!
复制代码


test 命令用于检查某个条件是否成立,与方括号([ ])类似。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表