複数のコマンドを同時に実行する方法を知っていますが、今必要なのは、コマンドの実行間に少しの時間遅延を置き、同じコマンドを複数回実行することです。
必要
- 私はこれにスクリプトを使用したくありません
- 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
ループと同じシェルで実行されるため、パフォーマンスが向上します。 subshell()を使用すると、$(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;