Shell_指令碼(下)
阿新 • • 發佈:2018-12-13
七、流程控制
1、if判斷
1)語法
if [ 條件判斷 ];then
程式
fi
或者
if [ 條件判斷 ]
then
程式
fi
注意:
① [ 條件判斷 ] 中括號和條件判斷式之間必須有空格
② if後要有空格
2)例項
因為Shell寫的有問題,因此報錯
2、case語句
1)語法
case $變數名 in "值1") 如果變數的值等於值1,則執行程式1 ;; "值2") 如果變數的值等於值2,則執行程式2 ;; .....其他分支...... *) 如果變數的值都不是以上的值,則執行此程式 ;; esac
注意:
① case行尾必須為單詞 “in” ,每個模式匹配必須以右括號 “)” 結束。
② 雙分號 “ ;; ” 標識命令序列結束,相當於java中的break;
③ 最後的 “ *) ” 表示預設模式,相當於java中的default。
2)例項
3、for迴圈
1)語法
for((初始值;迴圈控制條件;變數變化 ))
do
程式
done
或
for 變數 in 值1 值2 值3......
do
程式
done
2)例項1
3)例項2
列印所有輸入的引數:
比較一下$*和 [email protected]
獲得結果還是分開的。
改變程式碼:
能體現出“$*”代表一個整體,“[email protected]”代表各個引數
4、while迴圈
1)語法
while [ 條件判斷式 ]
do
程式
done
2)例項
八、read讀取控制檯輸入
1、語法
rend(選項)(引數)
選項:
-p:指定讀取值時的提示符
-t:指定讀取值時的時間(秒)
引數:
變數:指定讀取值的變數名
2、例項
九、函式
1、系統函式
1)basename語法
basename[string/pathname][suffix]:basename命令會刪掉所有字首包括最後一個(‘/’)字元,然後將字串顯示出來
選項:
suffix為字尾,如果suffix被指定了,basename會將 pathname或string中的 suffix去掉。
例項:
2)dirname語法
dirname 檔案絕對路徑 :從指定的包含絕對路徑的檔名中去除檔名(非目錄的部分),然後返回剩下的路徑(目錄的部分)
例項:
2、自定義函式
1)語法
[ function ] funname[()]
{
Action;
[return int;]
}
funname
2)經驗技巧
① 必須在呼叫函式的地方之前先宣告函式,shell指令碼是逐行執行的。不會像其他語言一樣先編譯。
② 函式返回值只能通過 $? 系統變數獲得,可以顯示加:return 返回,如果不加將以最後一條命令執行結果,作為返回值。return後跟數值 n(0-255)
3)例項