在 bash 中的另一个变量中包含变量

在 bash 中的另一个变量中包含变量

我正在 bash 中编写一个循环,我想将一个变量包含在另一个变量中:

  printf "Number of volumes to add: "
  read -r num_volumes
  for volume_number in "$num_volumes"
  do
    vol_id_{$volume_number}="create_volume"
  done

这是正确的语法吗?

答案1

首先,当您想使用foo_1foo_2等变量时,请不要使用。使用大批反而:

foo=()
foo[0]=123; foo[1]=456;
printf "%s\n" "${foo[@]}"

或者,如果您需要非数字键,关联数组:

declare -A bar=()
bar[abc]=123; bar[def]=456;
for key in "${!bar[@]}"; do echo "$key: ${bar[$key]}"; done

至于您的代码,for volume_number in "$num_volumes"将运行一次循环体,并将volume_number其设置为num_volumes.引号可以防止任何拆分,num_volumes因此只有一个单词可以for循环。鉴于您的提示和变量名称引用了许多内容,您可能甚至不想拆分,而是循环遍历数字列表:

read num
vars=()
for (( i=0; i < num; i++ )); do
    vars[i]="some value for $i"
done

相关内容