ubuntu中的fi语法_Shell脚本语法--if/then/elif/else/fi
Shell腳本語法--if/then/elif/else/fi
和C語言類似,在Shell中用if、then、elif、else、fi這幾條命令實現分支控制。這種流程控制語句本質上也是由若干條Shell命令組成的,例如先前講過的 ?www.2cto.com
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語句塊的結束。見下例:
#! /bin/sh
if [ -f /bin/bash ]
then echo "/bin/bash is a file"
else echo "/bin/bash is NOT a file"
fi
if :; then echo "always true"; fi
:是一個特殊的命令,稱為空命令,該命令不做任何事,但Exit Status總是真。此外,也可以執行/bin/true或/bin/false得到真或假的Exit Status。再看一個例子:
#! /bin/sh
echo "Is it morning? Please answer yes or no."
read YES_OR_NO
if [ "$YES_OR_NO" = "yes" ]; then
echo "Good morning!"
elif [ "$YES_OR_NO" = "no" ]; then
echo "Good afternoon!"
else
echo "Sorry, $YES_OR_NO not recognized. Enter yes or no."
exit 1
fi
exit 0
上例中的read命令的作用是等待用戶輸入一行字符串,將該字符串存到一個Shell變量中。
此外,Shell還提供了&&和||語法,和C語言類似,具有Short-circuit特性,很多Shell腳本喜歡寫成這樣:
test "$(whoami)" != 'root' && (echo you are using a non-privileged account; exit 1)
&&相當于“if...then...”,而||相當于“if not...then...”。&&和||用于連接兩個命令,而上面講的-a和-o僅用于在測試表達式中連接兩個測試條件,要注意它們的區別,例如,
test "$VAR" -gt 1 -a "$VAR" -lt 3
和以下寫法是等價的
test "$VAR" -gt 1 && test "$VAR" -lt 3
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的ubuntu中的fi语法_Shell脚本语法--if/then/elif/else/fi的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 镀锌板用途(铜铝复合板的用途)
- 下一篇: java—Maven安装配置