指令碼(shell script)
阿新 • • 發佈:2019-01-25
執行方式區別
- 三種執行方式:
source
、.
、sh
- 小數點和sh是在開啟一個子程序上執行,腳本里的變數和操作不會傳到父程序
- source直接在父程序中執行
例如配置生效用
source ~/.bashrc
而不用sh ~/.bashrc
分支
判斷符號[]
- 中括號內的每個元件都需要空格鍵分隔,常用於if..then..fi中
- 中括號內變數,最好都以雙引號括起來
- 中括號內常量,最好都以單引號或雙引號括起來
- 在判斷中,一個等號和兩個等號是一樣的
name="VB Ta"
[ $name == "VB" ] #會返回引數過多錯誤,此時比較的是 VB Ta=="VB"
[ "$name" == "VB" ] #比較的是 "VB Ta"=="VB"
if…then
if [ 條件判斷式1 ]; then
balala
elif [ 條件判斷式2 ]; then #等同於 else if
balala
else
balala
fi #if倒過來寫,表示if結束
- &&表示and,||表示or
case…esac
case $變數名 in
"第一個變數內容")
程式段
;; #每個型別結尾用兩個連續分號處理
"第二個變數內容")
程式段
;;
*) #等同於default
程式段
;;
esac
函式
function do()
{
程式段
}
- function定義一定要在指令碼的最前面(先定義才能用)
function也有內建變數,
0, 1…,與script中的$num含義一樣,但是作用域不同function do() { echo "Your choice is $1" #輸出結果是 Your choice is 1 } case $1 in #這個$1是執行指令碼時輸入的第一個引數 "one") do 1 #這個1是給do函式的引數 ;; *) do
迴圈
不定迴圈
while do done
當條件成立時進行迴圈
while [ condition ]
do #迴圈開始
程式段
done #迴圈結束
until do done
當條件成立時終止迴圈
until [ condition ]
do
程式段
done
for do done
與Java中的for迴圈含義一樣,可用i++
縮寫
for (( 初始值; 限制值; 執行步長))
do
程式段
done
for do done(固定迴圈)
已知要迴圈的次數
for var in con1 con2 con3 ...
do
程式段
done
第一次迴圈時,