Сценарий оболочки "для" синтаксиса цикла - PullRequest
175 голосов
/ 18 сентября 2009

Я получил на работу следующее:

for i in {2..10}
do
    echo "output: $i"
done

Он выдает несколько строк output: 2, output: 3 и т. Д.

Однако, пытаясь запустить следующее:

max=10
for i in {2..$max}
do
    echo "$i"
done

производит следующее:

output: {2..10}

Как я могу заставить компилятор понять, что он должен обрабатывать $ max как другой конец массива, а не как часть строки?

Ответы [ 11 ]

1 голос
/ 18 сентября 2009

Использование:

max=10
for i in `eval echo {2..$max}`
do
    echo $i
done

Вам нужен явный вызов 'eval' для повторной оценки {} после подстановки переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...