Оболочка Bourne, Поскольку я в (seq)

Я хочу записать цикл в Оболочке Bourne, которая выполняет итерации определенного набора чисел. Обычно я использовал бы seq:

for i in `seq 1 10 15 20`
   #do stuff
loop

Но по-видимому на этом поле Solaris seq не существует. Кто-либо может помочь путем предоставления другого решения итерации списка чисел?

10
задан the Tin Man 2 October 2012 в 20:56
поделиться

4 ответа

Попробуйте

for i in 1 10 15 20
do
   echo "do something with $i"
done

Иначе, если у вас есть последние Solaris, есть Bash 3, по крайней мере,. Например, это дает диапазон от 1 до 10 до 15-20

for i in {1..10} {15..20}
do
  echo "$i"
done

или использовать инструмент, такой как Nawk

for i in `nawk 'BEGIN{ for(i=1;i<=10;i++) print i}'`
do
  echo $i
done

или даже цикл While While

while [ "$s" -lt 10 ]; do s=`echo $s+1|bc`; echo $s; done
16
ответ дан 3 December 2019 в 22:37
поделиться

Другое изменение с использованием BC :

for i in $(echo "for (i=0;i<=3;i++) i"|bc); do echo "$i"; done

Для оболочки Bourne вам, вероятно, придется использовать BackTicks, но избегать их, если вы можете:

for i in `echo "for (i=0;i<=3;i++) i"|bc`; do echo "$i"; done
1
ответ дан 3 December 2019 в 22:37
поделиться

Я считаю, что это работает, хотя и уродливым как грех:

for i in `echo X \n Y \n Z ` ...
0
ответ дан 3 December 2019 в 22:37
поделиться

Вы можете эмулировать SEQ с с , например, :

:

:

seq 0 5 120

переписан как:

dc -e '0 5 120  1+stsisb[pli+dlt>a]salblax'
2
ответ дан 3 December 2019 в 22:37
поделиться
Другие вопросы по тегам:

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