陈斌彬的技术博客

Stay foolish,stay hungry

Shell 脚本语法-if/then/elif/else/fi

和 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 语句块的结束。