使用变量保存 Bash 数组名称



website_array_$w 是由命令行中的给定参数创建的 w 个数组。我正在尝试创建一个新的数组 temp 并将特定的 website_array_$w 存储在其中。这似乎不起作用,我得到:

temp=${website_array_$w[*]}: bad substitution

我做错了什么?之后,我想创建一个新的数组random_temp$f其中包含数组温度的随机值。

for ((w=0; w<"$3"; w++)) do
eval echo 'temp=${website_array_$w[*]}'
for ((p=0; p<"$4"; p++)) do
for((i=0; i<"$f"; i++)) do
eval "random_temp=${temp[$RANDOM % ${#temp[@]}]}"
done
done
done

使用 nameref(适用于 Bash 4.3 及更高版本(:

declare -n temp=website_array_$w || { echo "ERROR: Need bash 4.3 or newer" >&2; exit 1; }

然后使用它:

random_temp=${temp[$RANDOM % ${#temp[@]}]}

看:

  • BashFAQ/006 - 如何使用变量(间接变量、指针、引用(或关联数组?
  • 如何在Unix和Linux StackExchange上使用变量作为数组名称的一部分

最新更新