linux shell程式設計中的陣列定義 遍歷

2021-09-07 14:22:38 字數 1789 閱讀 3700

**如下:

1

陣列定義法1:

2 arr=(123

45) # 注意是用空格分開,不是逗號!!34

陣列定義法2:

5array

6 array[0]="a"

7 array[1]="b"

8 array[2]="c"

910獲取陣列的length(陣列中有幾個元素):11$

1213

遍歷(for迴圈法):

14for var in

$;15

do16

echo

$var

17done

1819

遍歷(帶陣列下標):

20for i in"$

"; 21do

22 printf "

%s\t%s\n""

$i""$

"23done

2425

遍歷(while迴圈法):

26 i=0

27while [ $i -lt $ ]

28do

29echo

$30 let i++

31done

3233

向函式傳遞陣列:

34由於shell對陣列的支援並不號,所以這是乙個比較麻煩的問題。

35翻看了很多stackoverflow的帖子,除了全域性變數外,無完美解法。

36這裡提供乙個變通的思路,我們可以在呼叫函式前,將陣列轉化為字串。

37在函式中,讀取字串,並且分為陣列,達到目的。

3839

fun()

42for((i=0;i<$_n_arr;i++));

43do

44 elem=$

45echo

"$i : $elem"46

done

; 47}48

49 array=(a b c)

50 fun "

$(echo $)

"

純文本版:

陣列定義法1:

arr=(1 2 3 4 5) # 注意是用空格分開,不是逗號!!

陣列定義法2:

array

array[0]="a"

array[1]="b"

array[2]="c"

獲取陣列的length(陣列中有幾個元素):

$遍歷(for迴圈法):

for var in $;

doecho $var

done

遍歷(帶陣列下標):

for i in "$";

do printf "%s\t%s\n" "$i" "$"

done

遍歷(while迴圈法):

i=0while [ $i -lt $ ]

doecho $

let i++

done

向函式傳遞陣列:

由於shell對陣列的支援並不號,所以這是乙個比較麻煩的問題。

翻看了很多stackoverflow的帖子,除了全域性變數外,無完美解法。

這裡提供乙個變通的思路,我們可以在呼叫函式前,將陣列轉化為字串。

在函式中,讀取字串,並且分為陣列,達到目的。

fun()

for((i=0;i<$_n_arr;i++));

do elem=$

echo "$i : $elem"

done;

}array=(a b c)

fun "$(echo $)"

Linux shell程式設計中的判斷條件

b file 若檔案存在且是乙個塊特殊檔案,則為真 c file 若檔案存在且是乙個字元特殊檔案,則為真 d file 若檔案存在且是乙個目錄,則為真 e file 若檔案存在,則為真 f file 若檔案存在且是乙個規則檔案,則為真 g file 若檔案存在且設定了sgid位的值,則為真 h fi...

Linux Shell程式設計中的特殊變數

大家都知道普通的bash命令後邊可以跟任意的引數 例如在啟動hbase的客戶端的時候,我們在hbase的bin目錄下使用.hbase shell進入到hbase的客戶端 那我們自己編寫的指令碼是否也支援傳遞引數呢?答案當然是肯定的,但是怎麼編寫這樣的shell程式呢?這就需要使用到位置引數。位置引數...

linux shell 程式設計

bin bash comments your commands go here 首行中的符號 告訴系統其後路徑所指定的程式bash即是解釋此指令碼檔案的shell程式。除第一行外,以 開頭的行就是注釋行,直到此行的結束。如果一行未完成,可以在行尾加上 這個符號表明下一行與此行會合併為同一行。有環境變...