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