繁体   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