組み込みのUnixコマンドrepeat
があります その最初の引数はコマンドを繰り返す回数です。ここで、コマンド(任意の引数を含む)は、repeat
の残りの引数によって指定されます。 。
たとえば、
% repeat 100 echo "I will not automate this punishment."
指定された文字列を100回エコーしてから、停止します。
同様のコマンドが欲しいのですが、forever
と呼びましょう –これは、最初の引数が繰り返しの間に一時停止する秒数であり、永久に繰り返されることを除いて、同様に機能します。たとえば、
% forever 5 echo "This will get echoed every 5 seconds forever and ever."
書く前にそういうものがないか聞いてみようと思いました。 2行のPerlまたはPythonスクリプトのようなものですが、これを行うためのより標準的な方法があるかもしれません。そうでない場合は、お好きなスクリプト言語で解決策を投稿してください。
PS:これを行うためのより良い方法は、repeat
を一般化することかもしれません。 繰り返す回数(-1は無限大を意味します)と繰り返しの間にスリープする秒数の両方を取得します。
上記の例は次のようになります。
% repeat 100 0 echo "I will not automate this punishment."
% repeat -1 5 echo "This will get echoed every 5 seconds forever."
承認された回答:
watch
をお試しください コマンド。
Usage: watch [-dhntv] [--differences[=cumulative]] [--help] [--interval=<n>]
[--no-title] [--version] <command>`
つまり:
watch -n1 command
コマンドは毎秒実行されます(技術的には、1秒ごとに加えてcommand
にかかる時間 watch
として実行する (少なくともprocps
およびbusybox
実装)command
の2回の実行の間に1秒間スリープします )、永遠に。
コマンドをexec
に渡しますか sh -c
の代わりに 、-x
を使用します オプション:
watch -n1 -x command
macOSでは、watch
を入手できます Macポートから:
port install watch
または、Homebrewから入手できます:
brew install watch