質問

私は数字の特定のセットを反復しBourneシェルのループを書きたいです。通常、私はseqを使用することになります:

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

しかし、一見このSolarisボックスseq上存在しません。番号のリストを反復処理する別のソリューションを提供することにより、缶誰ヘルプ?

役に立ちましたか?

解決

のtry

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の

のような使用ツールOR
for i in `nawk 'BEGIN{ for(i=1;i<=10;i++) print i}'`
do
  echo $i
done

あるいはwhileループ

while [ "$s" -lt 10 ]; do s=`echo $s+1|bc`; echo $s; done

他のヒント

あなたはseqdcをエミュレートすることができます:

たとえば、

seq 0 5 120
として書き直されます:

dc -e '0 5 120  1+stsisb[pli+dlt>a]salblax'

bcを使用して別のバリエーションます:

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

Bourneシェルの場合、あなたはおそらくバッククォートを使用する必要がありますが、できればそれらを避けるでしょう。

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

私は罪として醜いとはいえ、これが機能することを見つけます

for i in `echo X \n Y \n Z ` ...
for i in `seq 1 5 20`; do echo $i; done

結果:

5
10
15
20

$男性配列

SEQ(1)                           User Commands                          SEQ(1)

NAME
       seq - print a sequence of numbers

SYNOPSIS
       seq [OPTION]... LAST
       seq [OPTION]... FIRST LAST
       seq [OPTION]... FIRST INCREMENT LAST
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top