0

1時間ごとにN回の操作(同じ操作)を計算する必要があります。

今のところ私は自分の操作を行っていますが、1時間にN回実行することを理解できません。

 #!/bin/bash
 N=10; 
 # my operation
 sleep 3600/${N}

なにか提案を?

4

1 に答える 1

1

さて、あなたが今書いているように、それは「私の操作」を一度だけ実行し、その後6分間スリープしてから終了します。必要なのは、これら2つの線の周りのループ構造です。bashいくつかの異なるループ構造をサポートしますが、おそらくこの場合の最も単純なものは次のとおりです。

#!/bin/bash
N=10
((delay=3600/N))
while true
do
  # do something
  sleep ${delay}
done

もちろん、この場合、ループを終了するための準備はありません。そのため、^Cまたはkillまたは何かで終了する必要があります。特定の回数だけ実行したい場合は、for代わりにループを使用するか、反復ごとに特定のファイルが[存在しない]かどうかを確認し、そのファイルを作成または削除するときにループを終了することができます。 。最も適切なアプローチは、実際にやろうとしていることの全体像によって異なります。

于 2012-12-12T15:34:44.297 に答える