2016-08-25 11 views
0

は、私はちょうどこのように、私のスクリプトは、一定の時間のために実行したい:私は入れて試したbashスクリプトを一定の時間実行するにはどうすればいいですか?

for a in {a..z}; 
do 
    for b in {a..z}; 
    do 
    echo "$a$b" 
    done 
done 

timeout 10s ./script 

は、しかし、私は私のスクリプト内のコマンドを統合したいですforループのtimeoutコマンドは動作しません。スクリプトでtimeoutコマンドを使用するにはどうすればよいですか?

+0

を行うことにより、forループを回避することができます実行すると、タイムアウトは発生しません。ループを 'echo {a..z} {a..z}'に置き換えることができます。 – karakfa

+0

はい、10秒ではなく2秒でスクリプトを終了したいのですが? – Dayne

答えて

0

バックグラウンドプロセスと独自のタイマーを使用できます。正確に10秒間続くことは保証されていませんが、通常は近いでしょう。

for a in {a..z}; 
do 
    for b in {a..z}; 
    do 
    echo "$a$b" 
    done 
done & 
sleep 10; 
kill ${!} 
+0

ありがとう、これは一番うまくいく。 – Dayne

+0

@Dayne答えが良ければ、(緑のチェックマーク)を受け入れてください。ありがとう! – Eric

1
timeout 2s bash -c 'for a in {a..z}; 
do 
    for b in {a..z}; 
    do 
    echo "$a$b" 
    done 
done' 

それを行うための一つの方法ですが、@karafkaは、すでに述べたように、あなたは、このスクリプトは何も時間がかかりません

timeout 2s echo {a..z}{a..z} | sed 's/[[:blank:]]/\n/g' 

あるいは

timeout 2s printf "%s\n" {a..z}{a..z} 
+1

1行に1つの要素が必要な場合は、おそらく 'printf"%s \ n "{a..z} {a..z}' – karakfa

+0

を使用してください。ありがとう@ karakfa。更新しました !! – sjsam

関連する問題