一、Shell流程控制
1.if else
(1)if語句語法格式:
if condition
then
command1
command2
…….
commandN
fi
(2)if else 語法格式:
if condition
then
command1
command2
…….
commandN
else
command
fi
(3)if else-if else 語法格式
if condition
then
command1
command2
…….
commandN
elif
command
else
command
fi
2.for 循環
for var in item1 item2…
do
command1
command2
…….
command
done
3.while 語句
while condition
do
command
done
4.until循環
until循環執行一系列命令直至條件爲真時停止。與while循環的處理方式相反。只是會執行一次。
語法:
until condition
do
command
done
5.case 語句
case 值 in
模式1)
Command1
Command2
…
CommandN
;;
模式2)
Command1
Command2
…
CommandN
;;
esac
例:
運行結果:
esac 作爲結束標記,每個case分支用右圓括號,用兩個分號表示break。
6.跳出循環
break命令 允許跳出所以循環(終止執行後面的所有循環)
continue命令 與break命令類似,但它不會跳出所以循環,僅跳出當前循環。
二、Shell函數
函數定義格式:
[ function ] funname [ ( ) ]
{
action;
[ retuen int ; ]
}
說明:
- 1.可以寫成function fun(),也可直接用fun()定義,不帶任何參數。
- 2.參數返回,可以顯示加:return 返回,如果不加,將以最後一條命令運行結果,作爲返回值。 return 後跟數值 n(0-255)
例1:不帶 return
執行結果:
例2:帶return
執行結果:
函數返回值在調用該函數後通過$? 來獲得。
注意:所有函數在使用前必須定義。在調用函數時僅使用其函數名即可。
函數參數
調用函數時可以向其傳遞參數。在函數內部通過$n的形式來獲取參數的值。
例:
執行結果:
注:$# :傳遞到腳本的參數個數
$* :以一個單字符串顯示所有向腳本傳遞的參數
三、Shell 輸入/輸出重定向
重定向命令:
Command > file 將輸出重定向到file
Command < file 將輸入重定向到file
Command >> file 將輸出以追加的方式重定向到file
n > file 將文件描述符爲n的文件重定向到file
n >> file 將文件描述符爲n的文件以追加的方式重定向到file
n > & m 將輸出文件m和n合併
n < & m 將輸入文件m和n合併
<< tag 將開始標記tag和結束標記tag之間的內容作爲輸入
注意:文件描述符 0 通常爲 標準輸入,1是標準輸出,2是標準錯誤輸出。