İki dizisel diziyi, bash
'da, normal bir dizideki gibi birleştirmenin zarif bir yolunu bilen var mı? İşte bahsettiğim budur:Bash dizindeki birleştirici diziler nasıl birleştirilir?
declare -ar array1=(5 10 15)
declare -ar array2=(20 25 30)
declare -ar array_both=(${array1[@]} ${array2[@]})
for item in ${array_both[@]}; do
echo "Item: ${item}"
done
İki ilişkilendirilebilir dizilerle aynı şeyi yapmak istiyorum, ama aşağıdaki kod çalışmaz: aşağıdaki gibi iki normal diziler birleştirebilirsiniz bash ise
:
./associative_arrays.sh: line 3: array_both: true: must use subscript when assigning associative array
aşağıdaki bir iş-ar:
declare -Ar array1=([5]=true [10]=true [15]=true)
declare -Ar array2=([20]=true [25]=true [30]=true)
declare -Ar array_both=(${array1[@]} ${array2[@]})
for key in ${!array_both[@]}; do
echo "array_both[${key}]=${array_both[${key}]}"
done
aşağıdaki hata veriyor ound ben ile geldi:
declare -Ar array1=([5]=true [10]=true [15]=true)
declare -Ar array2=([20]=true [25]=true [30]=true)
declare -A array_both=()
for key in ${!array1[@]}; do
array_both+=([${key}]=${array1[${key}]})
done
for key in ${!array2[@]}; do
array_both+=([${key}]=${array2[${key}]})
done
declare -r array_both
for key in ${!array_both[@]}; do
echo "array_both[${key}]=${array_both[${key}]}"
done
Ama aslında olmayan çalışma örnekte gösterildiği gibi tek satırlık atama sağlayacak bazı dilbilgisi özlüyorum umuyordum.
Teşekkürler!
bir astar, her anahtar için '[anahtar] = value' öğeleri içine bir dizi genişletmek mümkün gerektirecektir. Ben böyle bir genişleme bilmiyorum. Düşünebildiğim en yakın şey, -p'nin size bildirdiği şeydir (kullanmak için masaj yapmanız gerekir). –
Peki, diziler, parametre genişletme ve bash değişkenleri ile çok fazla zaman harcadım. Sorunuzdaki "geçici çözüm" ifadesinin, ilişkilendirici bir diziyi kopyalamanın en temiz yolu olduğunu söylemenin güvenli olduğunu düşünüyorum. Yine de, eğer sen gerçekten istiyorsan, senaryoyu bir "noktalı" ile bir çift noktalı virgül haline getirebilirim ...;) – vastlysuperiorman