[英]Bash - Creating Arrays using loop counter
我正在編寫一個bash腳本,我需要在for循環中創建數組,並在每次迭代時使用計數器(數組元素)中包含的字符串命名每個數組。
這是代碼:
myArray=( joe bob dave mark )
for i in "${myArray[@]}"
do
"$k_array"=( `cat fileUsedToPopulate.txt` )
done
# echo to test if one of the arrays has been created and populated
for j in "${joe_array[@]}"
do
echo $j
done
所需的結果是4個數組,joe_array bob_array等,每個數組都填充了該文件。
但是我還沒有找到逃避$ k,以便在聲明/填充它時附加到數組名稱。
這是我得到的錯誤:
第30行:意外令牌附近的語法錯誤`cat fileUsedToPopulate.txt
'第30行: "$k_array"=(
cat $ DIR / $ braDir / oem.txt`)'
感謝您提供的任何幫助。
使用eval分配名稱取決於另一個變量的變量:
val=$(cat fileUsedToPopulate.txt)
for k in "${myArray[@]}"
do
eval "${k}_array"="\"${val}\""
done
請注意,如果文件的內容包含空格或其他分隔符,則需要嵌套雙引號(具有正確的轉義)。 否則shell將把它的一部分解釋為執行命令。 此外,您需要在$k
變量名稱周圍使用大括號,或者shell將查找變量名稱k_array
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.