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_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

관련 정보