Shell指令碼陣列詳解

2021-10-21 23:44:02 字數 1847 閱讀 2939

陣列包括的資料型別

獲取陣列的長度

陣列的遍歷

陣列的切片

陣列的替換

向函式傳陣列引數

從函式中返回陣列

陣列中的元素:(30 20 10 60 50 40)

陣列中的索引: 0 1 2 3 4 5

方法一陣列名=(value0 value1 value2 …)

方法二陣列名=([0]=value [1]=value [2]=value …)

方法三列表名=「value0 value1 value2 …」

方法四陣列名[0]=「value」

陣列名[1]=「value」

陣列名[2]=「value」

1.數值型別

2.字元型別

使用""或』 '定義

arr_number=(1 2 3 4 5)

取得陣列元素的個數

length=$

或者length=$

取得陣列單個元素的長度

length=$

#!/bin/bash

arr_number=

(1 2 3 4 5)

forvin$

doecho

$vdone

arr=(1 2 3 4 5)

echo $               #輸出整個陣列

echo $                 #獲取 $ 的值

echo $

echo $

arr=(1 2 3 4 5)

echo $

echo $

arr=($)

echo $

方法一array_name[index]=value

方法二array_name[$]=value

方法三array_name=("$" value … valuen)

雙引號不可省略,否則當陣列array_name中存在包含空格的元素時會按照空格將元素拆分為多個

不能將"@"替換為」*「,如果替換為 " * 「,不加雙引號時與」@"的表現一致,加雙引號時,會將陣列array_name中的所有元素作為乙個元素新增到陣列中

for i in 「$」; do echo $i; done

方法四array_name+=(value1 … valuen)

待新增元素必須用"()"包圍起來,並且多個元素用空格分離

如果將陣列變數作為函式引數,函式只會取陣列變數的第乙個值

test1()

}array=

echo 「原始陣列的值為:$」

test1 $array

解決這個問題則需要將陣列變數的值分解成單個的值,然後這些值作為函式引數使用。在函式內部,再將所有的引數重新合成乙個新的陣列變數。

test2() "

}array=(3 2 1 4 5)

echo 「原始陣列的值為:」$"

test2 $

test2()do

sum=$[

$sum + $value

]for value in$do

sum=$[

$sum + $value

]done

echo

$sum

}

test3(

) * 2]

}echo$}

array=

(3 2 1 4 5)

echo

"原始陣列的值為:"$"

result1=`test2 $

`echo "新陣列的和為:$result1"

shell指令碼 陣列的使用

bin bash 陣列的基本元素和使用 生成乙個陣列 my array 0 1 2 3 4 5 6 7 8 9 echo 陣列的所有元素 echo 陣列中下標為5的元素 echo 陣列的長度是 或 修改陣列中某個元素的值 my array 5 100 echo 修改下標為5的元素的值後,陣列的所有元...

Shell指令碼陣列操作小結

linux shell在程式設計方面比windows批處理強大很多,無論是在迴圈 運算。bash支援一維陣列 不支援多維陣列 並且沒有限定陣列的大小。類似與c語言,陣列元素的下標由0開始編號。獲取陣列中的元素要利用下標,下標可以是整數或算術表示式,其值應大於或等於0。定義陣列 在shell中,用括號...

shell指令碼 數值比較

用於數值比較的無非大於 小於 等於 大於等於 小於等於這幾個。比較格式 數值1 比較符 數值2 注意左邊的括號與數值1之間有乙個空格,同樣,數值2和右邊的括號之間也有空格。數值比較運算子對應下面幾個 eq判斷相等,相等返回true,否則返回false ne判斷是否不相等,不相等返回true,否則返回...