和 C 语言类似,在 Shell 中用 if、then、elif、else、fi 这几条命令实现分支控制。这种流程控制语句本质上也是由若干条 Shell 命令组成的,例如
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
其实是三条命令,if [ -f ~/.bashrc ]
是第一条,then . ~/.bashrc
是第二条,fi
是第三条。如果两条命令写在同一行则需要用 ;
号隔开,一行只写一条命令就不需要写 ;
号了,另外,then
后面有换行,但这条命令没写完,Shell
会自动续行,把下一行接在 then
后面当作一条命令处理。和 [
命令一样,要注意命令和各参数之间必须用空格隔开。if 命令的参数组成一条子命令,如果该子命令的 Exit Status
为0(表示真),则执行 then
后面的子命令,如果 Exit Status
非0(表示假),则执行 elif、else
或者 fi
后面的子命令。if 后面的子命令通常是测试命令,但也可以是其它命令。Shell 脚本没有 {}
括号,所以用 fi
表示 if 语句块的结束。