簡體   English   中英

Bash - 使用循環計數器創建數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM