1. 程式人生 > >Shell_指令碼(下)

Shell_指令碼(下)

七、流程控制

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)例項