在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else。

    还要注意,sh里的if [ $foo -eq 0 ],这个方括号跟Java/PHP里if后面的圆括号大不相同,它是一个可执行程序(和ls, grep一样),想不到吧?在CentOS上,它在/usr/bin目录下:

    1. -rwxr-xr-x. 1 root root 33408 6 22 2012 /usr/bin/[

    if

    1. if condition
    2. then
    3. command1
    4. command2
    5. ...
    6. commandN
    7. fi

    写成一行(适用于终端命令提示符):

    1. if `ps -ef | grep ssh`; then echo hello; fi

    末尾的fi就是if倒过来拼写,后面还会遇到类似的

    if else

    1. if condition
    2. then
    3. command1
    4. command2
    5. ...
    6. commandN
    7. command
    8. fi

    if else-if else

    for

    1. for var in item1 item2 ... itemN
    2. do
    3. command1
    4. command2
    5. ...
    6. done

    写成一行:

    1. for var in item1 item2 ... itemN; do command1; command2 done;

    C风格的for

    1. for (( EXP1; EXP2; EXP3 ))
    2. do
    3. command1
    4. command2
    5. command3
    6. done

    while

    1. while condition
    2. do
    3. command
    4. done

    无限循环

    或者

    1. while true
    2. do
    3. command
    4. done
    1. for (( ; ; ))

    until

    1. until condition
    2. do
    3. done
    1. case "${opt}" in
    2. "Install-Puppet-Server" )
    3. exit
    4. ;;
    5. "Install-Puppet-Client" )
    6. install_client $1
    7. exit
    8. ;;
    9. "Config-Puppet-Server" )
    10. config_puppet_master
    11. exit
    12. ;;
    13. "Config-Puppet-Client" )
    14. config_puppet_client
    15. exit
    16. ;;
    17. "Exit" )
    18. exit
    19. ;;
    20. * ) echo "Bad option, please choose again"

    case的语法和C family语言差别很大,它需要一个esac(就是case反过来)作为结束标记,每个case分支用右圆括号,用两个分号表示break