2017-02-15 4 views
0

のために、私はループのシーケンシャルを行う方法を知っているように:bashの - ループの異なるイタレーション

for i in $(seq 0 63) 
do 
    echo $i 
done 

これは0-63を印刷します。 しかし、私が望んでいた場合、特定の数字のみ0、5、25、43、44、51のようにループし、54

私は次のことを行うことができます知っている:

for i in $(seq 0 63) 
do 
    if [ "$i" -eq 0 ] || [ "$i" -eq 5 ] || [ "$i" -eq 25 ] || [ "$i" -eq 43 ] || [ "$i" -eq 44 ] || [ "$i" -eq 51 ] || [ "$i" -eq 54 ]; then 
    echo $i 
    fi 
done 

しかし、結果はそれになりますそれでもそれらのループ反復を通過し、効率的な解決策ではありません。

これらの特定の数字を記述するには、seqと一緒に使用できるものがありますか?0,5,25,43,44,51,54?

答えて

1

あなたが知られているリストを反復処理したい場合は、単にその超える変数とループの中で、要素、スペースで区切って保存することができます:OPについては

nums="0 5 25 43 44 51 54"; 
for i in $nums; 
do echo $i; 
done; 
+0

を、 'seq'は、まさにこのようなを生成していますハードコーディングされたリスト – chepner