shell程式設計入門(2)

2022-08-31 21:27:20 字數 2854 閱讀 3900

shell的結構分為三大類:順序結構、分支結構和迴圈結構

1. if語句

語法格式:

if 《語句序列a>

then

《語句序列b>

fi

如果語句序列a中的最後乙個命令的返回值為0,則執行語句序列b中的命令,然後繼續執行fi以後的命令;如果語句序列a中的最後乙個命令的返回值為非0,則跳轉到fi並且繼續執行fi以後的命令,注意,在這裡a執行結果為0認為是真

if

test –f funfilethen

echo funfile exists

fi

if [ -f funfile ]; then  

echo funfile exists

echo hello

fi

2. if-else語句

語法格式:

if

語句序列a

then

語句序列b

else

語句序列c

fi

如果語句序列a中的最後乙個命令的返回值為0,則執行語句序列b中的命令,然後繼續執行fi以後的命令;如果語句序列a中的最後乙個命令的返回值為非0,則執行語句序列c中的命令,然後繼續執行fi以後的命令。

任何命令的返回值都可以作為判斷條件,也可以巢狀if語句,但必須保證if 和 fi配對。

if [ 「$x」 –lt 10 ]; then

echo x is less than 10

else

if [ 「$x」 –gt 10 ]; then

echo x is greater than 10

else

echo x is equal to 10

fifi

也可以使用一種簡寫形式:elif來代替乙個else if 巢狀。

3. case結構

語法結構:

case 單詞 in

模式a)

語句序列a

;;模式b)

語句序列b

;;...

esac

分支選擇是順序地對單詞和所提供的模式進行比較,如果一致,就執行後面的語句序列,然後跳轉到esac,並執行後續的語句。典型情況下,單詞是乙個變數,而模式可以使用?, *等萬用字元。

case 「$1」 in

start)

start

;;stop)

stop

;;*)

echo 「usage: $0 」

;;esac

4. while語句

語法格式:

while

語句序列a

do語句序列b

done

語句功能:依次執行語句序列a中的命令,如果語句序列a最後乙個命令的返回值為0,則執行語句序列b,回到步驟1,重複上面的過程,直到語句序列a中的最後乙個命令的返回值為非0。

x=1

while ((x <= 10))

do echo x is $x

let x=x+1

done

這裡解釋一下let命令,let在shell中執行算數運算。命名的引數可以在算術表示式中直接利用名稱訪問,不要前面帶有「$」符號。當訪問命名引數時,就作為算術表示式計算它的值。算術表示式按長整數進行求值,並且不檢查溢位。當然,用0作除數就產生錯誤。let的替代表示形式是:((算數表示式))

5. until語句

語法結構:

until

語句序列a

do語句序列b

done

until語句和while語句只有在測試條件上是相反的,其他的都一樣。

6. for語句

語法結構

for var in list

do語句序列a

done

1.如果list中還包含有token,則轉到步驟2,否則結束;2.var被設定為list中的下乙個token;3.語句序列a中的命令被執行;4.返回步驟1

echo file list:

for i in *; do

echo $i

done

7. continue和break語句

如果在迴圈體中使用continue則跳出本次迴圈,進入下一次迴圈;使用break則跳出整個迴圈。

8. shell函式

函式是指令碼內的指令碼,使用函式比起使用乙個新的指令碼可以大大加快呼叫速度。

有兩種函式格式:

(1)function 函式名

(2)函式名()

呼叫函式就像呼叫乙個shell指令碼或者命令一樣,直接在寫函式名字,如果需要,還可以跟引數。shell查詢命令的順序是:別名,關鍵字,函式,內部命令,指令碼和可執行程式,所以函式可能遮蔽外部指令碼或者程式。

可以給函式傳遞引數,在函式中處理和在普通指令碼中處理引數基本一樣,使用$1等位置引數,或者$*,$#等,但¡在函式中的$0並不表示函式名,而仍然是指令碼的檔名。

start()

呼叫
start a b c
如果不作特殊說明,在函式內訪問的變數是整個指令碼共享的變數,如果要定義只在函式內有效的區域性變數,則需要使用local語句。

shell程式設計入門

shell指令碼程式不是複雜的程式,它是按行解釋的。指令碼程式總是以 bin sh 開始,它通知shell使用系統上的bourne shell直譯器。其中 符號是注釋。指令碼程式是從上到下執行的,執行指令碼前需要改變該指令碼程式的執行許可權。確保正確建立指令碼例徑,只有 這樣,指令碼程式才能正確執行...

Shell 程式設計入門

首先建立乙個檔案 在終端中輸入如下命令 vi helloworld.sh 然後按i進行命令編寫 下面這句話是必須寫的 bin sh這句話是必須寫的 bin sh a hello world echo a 下面執行的時候先得輸入 將這個許可權改為可執行檔案 chmod x helloworld.sh ...

Shell程式設計入門

目錄 shell概述 shell解析器 shell指令碼 什麼是shell指令碼 編寫shell指令碼 1 指令碼格式 2 第乙個shell指令碼 helloworld 3.指令碼的常用執行方式 第一種 採用bash或sh 指令碼的相對路徑或絕對路徑 不用賦予指令碼 x許可權 第二種 採用輸入指令碼...