我正在 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_1
、foo_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