特定の時間(秒)の遅延を使用して同じコマンド「X」を複数回実行するには? [コピー]

特定の時間(秒)の遅延を使用して同じコマンド「X」を複数回実行するには? [コピー]

複数のコマンドを同時に実行する方法を知っていますが、今必要なのは、コマンドの実行間に少しの時間遅延を置き、同じコマンドを複数回実行することです。

必要

  • 私はこれにスクリプトを使用したくありません
  • 1行のコマンドでこれを行います。
  • Linuxで実行する必要がある
  • コマンドが実行される回数を制御する必要があります。

答え1

このライナーを使用して目的の操作を実行できます。

$ cmd="..some command..."; for i in $(seq 5); do $cmd; sleep 1; done

はい

$ date
Fri Nov 22 01:37:43 EST 2013

$ cmd="echo"; for i in $(seq 5); do $cmd "count: $i"; sleep 1;done
count: 1
count: 2
count: 3
count: 4
count: 5

$ date
Fri Nov 22 01:37:51 EST 2013

必要に応じてコマンド間の遅延を調整し、必要なコマンドにsleep ...変更できます。cmd=...

seq cmdを使用した中括弧の拡張

コマンドの代わりに中括弧拡張を使用してseq値の範囲を生成することもできます。中かっこ拡張はforループと同じシェルで実行されるため、パフォーマンスが向上します。 subshel​​l()を使用すると、$(seq ..)ループ内で実行されるシェルの範囲内でサブシェルを作成するため、パフォーマンスがわずかに低下します。for

はい

$ cmd="echo"; for i in {1..5}; do $cmd "count: $i"; sleep 1;done
count: 1
count: 2
count: 3
count: 4
count: 5

答え2

そしてzsh

repeat 10 {date; sleep 5}

コマンド間に5秒の待ち時間を置いてコマンドを実行します(ここではdateはい)。

代わりに5秒ごとに実行したい場合(コマンドの実行に5秒未満かかると仮定):

typeset -F SECONDS=0; repeat 10 {date; ((n=5-SECONDS)); SECONDS=0; LC_ALL=C sleep $n}

sleep少数秒の実装をサポートすると仮定)。

答え3

dateこれにより、5秒の遅延時間がかかり、コマンドは10回実行されます。 10をseq 1 10希望の回数に変更し、date希望のコマンドに置き換え、5を変更してsleep 5遅延時間を変更します。

for d in $(seq 1 10); do date; sleep 5; done;

関連情報