Баш для цикла с определенным диапазоном не работает - PullRequest
0 голосов
/ 27 октября 2019

Когда я определяю диапазон для цикла for, кажется, что он не работает. Если я вместо этого определю числа, то это сработает.

Это не сработает:

range="10 {4..28..8}"
for i in $range; do
echo $i
done

Вывод:

10
{4..28..8}

Это сработает:

for i in 10 {4..28..8}; do
echo $i
done

Выход:

10
4
12
20
28

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Использовать массив.

range=(10 {4..28..8})
for i in "${range[@]}"; do
  echo "$i"
done

(Выражение в скобках раскрывается при создании массива, а не при выполнении цикла for. Но на самом деле это не имеет большого значения.)

1 голос
/ 28 октября 2019

В документах говорится, что расширение фигурной скобки происходит перед расширением параметра. Когда вы определяете range="10 {4..28..8}", расширение скобок не происходит, потому что оно заключено в кавычки. Когда вы выполняете for i in $range, это не работает так, как вы собираетесь из-за приоритета.

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