A стандартной петли отлично работает для меняBash проблема петли сценария при замене постоянной с помощью переменной
for i in {1..3}
do
echo "$i"
done
Выход
1
2
3
Но если заменить константу на переменную (после объявления его, конечно,) это не так.
n=3
for i in {1..$n}
do
echo "$i"
done
Выход
{1..3}
Извинения, если это глупый вопрос. Я попытался найти SO и Google, но не повезло.
Развейте вопрос:
declare -a nOptions={3,4};
for i1 in $(seq 1 ${nOptions[0]});
do
for i2 in $(seq 1 ${nOptions[1]});
do
echo "$i1$i2"
done
done
Это дает
OUTPUT11
21
31
41
и не
11
12
13
14
21
22
23
24
31
32
33
34
, как ожидалось.
Это, кстати, вопрос. См. Http://mywiki.wooledge.org/BashPitfalls#for_i_in_.7B1...24n.7D –
Ваши 'nOptions' не являются допустимым объявлением массива. Может быть, вы имеете в виду 'nOptions = (3 4)'? –
Вам нужно объявить 'nOptions' как массив, что означает скобки в правой части. Вы можете использовать фигурные скобки внутри круглых скобок, если вы хотите сделать последовательность: 'nOptions = ({3..5})' –