shell 指令碼之for

2021-07-12 08:03:17 字數 1811 閱讀 9805

subdir="joan joanna"

for subdir in $subdir; 

doecho "building " $subdir; 

done

結果:building  joan

building  joanna

結果正常。

subdir="1 2 3 4"

for subdir in $subdir; 

doecho "building " $subdir; 

done

結果:building  1

building  2

building  3

building  4

結果正常。

若在定義變數列表時沒加引號,就出現錯誤。如:

subdir=joan joanna

for subdir in $subdir; 

doecho "building " $subdir; 

done

執行出現錯誤,無法通過。

subdir=10

for subdir in $subdir; 

doecho "building " $subdir; 

done

結果:building  10

正常。

subdir=「10」

for subdir in $subdir; 

doecho "building " $subdir; 

done

結果:building  10

正常。

總結:定義值,隨後遍歷定義的值中,對於資料列表需要用引號引起來;單個資料是否加引號無所謂。

定義列表變數還有一種寫法:在in後直接寫出變數列表。

for subdir in joan joaaa; 

doecho "building " $subdir; 

done

結果正常:

building  joan

building  joaaa

若寫成:

for subdir in "joan joaaa"

doecho "building " $subdir 

done

結果:building  joan joaaa

沒有出現語法錯誤,但並沒有得到我們需要的結果。

總結:in 後的列表如果加" ",會將其看做乙個整體。

in後呼叫shell命令:

dir="/var"

cd$dir

forkin$(ls$dir)

do

echo$k

done

結果:列出了/var目錄下的目錄或檔案,相當於在var目錄下ls

for k in $(seq 1 10)

doecho $k

done

結果列印了1~10

結論:對於for的物件,必須是乙個已知的資料列表。

這個列表可以是給定的值,也可以是命令執行

以後的,

也可以是呼叫shell函式得到的。

若將列表賦值給變數,在變數中遍歷需要在賦值時加「」,

否則會出錯

(單個資料無所謂),若資料在在in後

得到,加「」後就會把整個資料列表看成乙個整體。

Shell指令碼程式設計基礎之shell指令碼退出狀態碼

exit 在指令碼中本身是退出的作用 根據程式執行的結果,返回對應的狀態碼,幫助實現條件判斷 21 15 48 root c8 3 55 grep q root etc passwd echo grep q admin etc passwd echo grep q root abc echo gre...

Shell指令碼程式設計基礎之shell指令碼條件測試命令

注意 表示式前後必須有空白字元 05 19 35 root c8 3 55 help test test test 表示式 對條件表示式進行估值。根據 expr 表示式的估值以狀態 0 真 或 1 偽 退出。表示式可以是一元或者二元的。一元表示式通常用於檢測 檔案狀態。同時還有字串操作符和數字比較操...

shell指令碼之find

find pathname options print exec ok 引數pathname find命令所查詢的目錄路徑。例如用.來表示當前目錄,用 來表示系統根目錄。print find命令將匹配的檔案輸出到標準輸出。exec find命令對匹配的檔案執行該引數所給出的shell命令。相應命令的...