陣列的相關理論及操作
阿新 • • 發佈:2021-07-31
目錄:
1 (30 20 10 60 50 40) 2 0 1 2 3 4 5 3 4 方法1: 5 陣列名= (value0 value1 value2 ...) 6 7 方法2: 8 陣列名=([0]=value [1]=value [2]=value ...) 9 10 方法3: 11 列表名="value0 value1 value2 ..." 12 陣列名=($列表名) 13 14 方法4: 15 陣列名[0]="value" 16 陣列名[1]="value" 17 陣列名[2]="value"
二、陣列包括的資料型別
數值型別
字元型別(使用" "或者’ '定義)
1 arr number=(1 2 3 4 5) 2 arr_length=${#arr_number[*]} 3 ${#arr_number[@]} 4 echo $arr_length
echo ${arr_number[*]} echo ${arr_number[@]}
arr_index2=${arr_number [2]} echo $arr_index2
1 #!/bin/bash 2 3 arr=(10 20 30 40 50) 4 for i in ${arr[@]} 5 do 6 echo $i 7 done
1 arr=(1 2 3 4 5) 2 echo ${arr[@]} #輸出整個陣列 3 echo ${arr[@]:0:2} #獲取${ 陣列名[@或*] :起始位置:長度}的值 4 echo ${arr1[*]:1:3} 5 echo ${arr[@]:2:3}
1 arr=(1 2 3 4 5) 2 echo ${arr[@]/4/66} #${陣列名[@或*]/查詢字元/替換字元} 3 echo ${arr[@]} #並不會替換陣列原有內容 4 5 arr=(${arr[@]/4/66}) #要實現改變原有陣列,可通過重新賦值實現 6 echo ${arr[@]}
1 arr=(1 2 3 4 5) 2 unset arr #刪除陣列 3 echo ${arr[*]} 4 5 arr=(1 2 3 4 5) 6 unset arr[2] #刪除第三個元素 7 echo ${arr[*]}
1 方法1: 2 array_name[index]=value 3 4 方法二: 5 array_name[${#array_name[@]}]=value 6 7 方法三: 8 array_name=("${array_name[@]}" value1 ... valueN) 9 #雙引號不能省略,否則,當陣列array_ name中存在包含空格的元素時會按空格將元素拆分成多個 10 #不能將“@”替換為“*”,如果替換為“*”,不加雙引號時與“@”的表現一致, 加雙引號時,會將陣列array_ name中的所有元素作為一個 元素新增到陣列中 11 for i in "${array_name[@]}"; do echo $i; done 12 13 方法四: 14 array_name+=(value1...valueN) 15 待新增元素必須用“()"包圍起來,並且多個元素用空格分隔
1 如果將陣列變數作為函式引數,函式貝會取陣列變數的第一個值 2 3 test1() { 4 echo "接收到的引數列表: $@" 5 newarrary= ($1) 6 echo "新陣列的值為: ${newarrary[*]}" 7 } 8 9 array=(3 2 1 4 5) 10 echo "原始陣列的值為: ${array[*]}" 11 test1 $array 12 13 解決這個問題則需要將陣列變數的值分解成單個的值,然後將這些值作為函式引數使用。在函式內部,再將所有的引數重新組合成一個新 14 的陣列變數 15 16 test2() { 17 newarrary=($(echo $@)) 18 echo "新陣列的值為: $ {newarrary[*]}" 19 } 20 21 array=(3 2 1 4 5) 22 echo "原始陣列的值為: ${array[*]}" 23 test2 ${array[*]}
1 test2() { 2 newarrary=(`echo $@ `) 3 sum=0 4 5 for value in ${newarrary[*]} 6 do 7 sum=$ [$sum + $value] 8 done 9 echo $ sum 10 } 11 12 test3 (){ 13 newarrary=(`echo $@`) 14 for ((i=0; i<=$[$# - 1] ; i++)) 15 newarrary[$i]=$[${newarrary[$i]} * 2] 16 echo $ {newarrary[*] } 17 } 18 19 array=(3 2 1 4 5) 20 echo "原始陣列的值為: ${array[*]}" 21 22 result1='test2 ${array[*]}‘ 23 echo "新陣列的和為: $result1" 24 25 result2=(`itest3 ${array[*]}`) 26 echo "新陣列的值為: ${result2[*]}"