#!/bin/bash
比方說你有兩個整數索引和索引的字符串,像這樣的數組...猛砸拿到號碼,如果在整數數組索引元素
編輯...注意:此塊將在環在我的應用
declare -A arr
arr[${#arr[@]}]=someVal1
arr[${#arr[@]}]=someVal2
arr[someBool]=true
arr[someOtherString]="Some Text"
arr[${#arr[@]}]=someVal3
現在可以說,我想比較出於某種原因數組項數...
[ "${#arr[@]}" = 5 ] && echo "there are 5 array items";
輸出...
there are 5 array items
確定多數民衆贊成好,但讓我們來看看我們的陣列
declare -p arr
exit
輸出...
declare -A arr='([someBool]="true" [someOtherString]="Some Text"
[0]="someVal1" [1]="someVal2" [4]="someVal3")'
注意整數索引去0 ,1,4
所以我的問題是應該取代什麼
arr[${#arr[@]}]=
這樣整數數組索引能正常工作嗎? (0,1,2)
編輯... Temp解決方案基於Henk Langeveld的輸入... Temp,因爲它應該能夠編輯傳遞給它的數組,而不僅僅是靜態編輯全局數組。
#!/bin/bash
getArrIntIndexNum(){
local x=0
for i in "${!arr[@]}"; do
[[ $i =~ ^-?[0-9]+$ ]] && x=$((x+1))
done
echo $x
}
declare -A arr
arr[$(getArrIntIndexNum)]=someVal1
arr[$(getArrIntIndexNum)]=someVal2
arr[someBool]=true
arr[someOtherString]="Some Text"
arr[$(getArrIntIndexNum)]=someVal3
declare -p arr
輸出...
聲明-A ARR ='([someBool] = 「TRUE」[someOtherString] = 「一些文本」[0] = 「someVal1」[1] =「someVal2 「[2] =」someVal3「)'
我稍微修改了'declare -p'輸出,就好像有一個右邊距。結果仍然可以被bash解釋。 –