### 概览 - if 结构 - if else 结构 - if elif else 结构 - 层层嵌套 ### if 结构 ``` if [ condition ];then command command fi if test condition;then command fi if [[ condition ]];then command fi # 等价于 [ condition ] && command ``` ### if else 结构 ``` if [ condition ];then command1 else command2 fi # 等价于 [ condition ] && command1 || command2 ``` ``` me@me-EQ59:~/shell_demo/scripts/shell01$ cat if1.sh #! /bin/env bash # S1 输入参数的第一个 if [ "$1" = "hello" ];then echo $1 else echo "world" fi me@me-EQ59:~/shell_demo/scripts/shell01$ ./if1.sh world me@me-EQ59:~/shell_demo/scripts/shell01$ ./if1.sh hello hello me@me-EQ59:~/shell_demo/scripts/shell01$ ``` ``` me@me-EQ59:~/shell_demo/scripts/shell01$ ./if_read.sh 请输入hello:hello world me@me-EQ59:~/shell_demo/scripts/shell01$ ./if_read.sh 请输入hello:world 再次运行后,请输入hello me@me-EQ59:~/shell_demo/scripts/shell01$ cat if_read.sh #! /bin/env bash read -p "请输入hello:" str if [ "$str" = "hello" ];then echo "world" else echo "再次运行后,请输入hello" fi me@me-EQ59:~/shell_demo/scripts/shell01$ ``` ``` me@me-EQ59:~/shell_demo/scripts/shell01$ ./if_read_oneline.sh please input hello:hello hello me@me-EQ59:~/shell_demo/scripts/shell01$ ./if_read_oneline.sh please input hello:world please input hello! me@me-EQ59:~/shell_demo/scripts/shell01$ cat if_read_oneline.sh #! /bin/env bash read -p "please input hello:" str; [ "$str" = "hello" ] && echo "hello" || echo "please input hello!" me@me-EQ59:~/shell_demo/scripts/shell01$ ``` ### if elif else结构 ``` if [ condition1 ];then command1 elif [ condition2 ];then command2 elif [ condition3 ];then else command3 fi ``` ``` me@me-EQ59:~/shell_demo/scripts/shell01$ cat if_elif.sh #! /bin/env bash read -p "请输入hello" str if [ "$str" = "hello" ];then echo "hello" elif [ "$str" = "hello_elif" ];then echo "hello_elif" else echo "world" fi me@me-EQ59:~/shell_demo/scripts/shell01$ ./if_elif.sh 请输入hellohello hello me@me-EQ59:~/shell_demo/scripts/shell01$ ./if_elif.sh 请输入hellohello_elif hello_elif me@me-EQ59:~/shell_demo/scripts/shell01$ ./if_elif.sh 请输入hellonothing world me@me-EQ59:~/shell_demo/scripts/shell01$ ```