включить переменную в другую переменную в bash [дубликат]

-1
22.08.2018, 00:47
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
4
28.01.2020, 05:07

Теги

Похожие вопросы