中科因仑“3+1”工程特种兵精英论坛

标题: Shell if else语句 [打印本页]

作者: lucky80204    时间: 2014-8-15 09:37
标题: Shell if else语句
本帖最后由 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 命令用于检查某个条件是否成立,与方括号([ ])类似。







欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4