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
1単語だけ繰り返すことfor
ができます。プロンプトと変数名の多くを参照していることを考えると、おそらく分割したくないので、代わりに数字のリストを繰り返すことになります。
read num
vars=()
for (( i=0; i < num; i++ )); do
vars[i]="some value for $i"
done