解決策 1:
Bourne シェル for
loop はこのように設計されているため、このようなコマンドを自分で実装するのは非常に簡単です。
JimB の提案に従って、シーケンスを生成するために Bash ビルトインを使用します:
for i in {1..10}; do command; done
非常に古いバージョンの bash では、seq
を使用できます。 コマンド:
for i in `seq 10`; do command; done
command
の実行を 10 回繰り返します。 毎回 - パイプまたは ;
で区切られた一連のコマンドにすることができます または &&
. $i
を使用できます 変数を使用して、現在の反復を確認してください。
このワンライナーをスクリプトと見なし、特定されていない (しかしおそらく有効な) 理由で望ましくない場合は、.bashrc でおそらく次のようなものをコマンドとして実装できます (未テスト):
#function run
run() {
number=$1
shift
for i in `seq $number`; do
[email protected]
done
}
使い方:
run 10 command
例:
run 5 echo 'Hello World!'
解決策 2:
ps aux | grep someprocess
番組の変化を一定時間見たいようです。エドゥアルドはあなたの質問に正確に答える答えを出しましたが、別の方法があります:watch
:
watch 'ps aux | grep someprocess'
シェルがコマンドを「run watch ps aux」と解釈しないようにコマンドをシングル クォーテーションで囲み、結果を grep someprocess
でパイプ処理することに注意してください。 .前のコマンドを実行する別の方法は次のとおりです:
watch ps aux \| grep someprocess
デフォルトでは、watch
-n
を使用して変更できます。 オプション。たとえば、間隔を 1 秒にしたい場合:
watch -n 1 'ps aux | grep someprocess'
解決策 3:
楽しみのために
pgrep ssh ;!!;!!;!!;!!;!!;!!
解決策 4:
これを試してください:
yes ls | head -n5 | bash
これには、コマンドをサブシェルで実行する必要があり、パフォーマンスがわずかに低下します。 YMMV。基本的に、文字列 "ls" を N 回繰り返す "yes" コマンドを取得します。 "head -n5" は 5 回の繰り返しでループを終了します。最後のパイプは、コマンドを選択したシェルに送信します。
ちなみにcsh
のようなシェルには repeat
が組み込まれています 指図。これを使用して、bash サブシェルでコマンドを実行できます!
解決策 5:
以前の返信と同様ですが、for ループは必要ありません:
seq 10 | xargs -I -- echo "hello"
引数やオプションなしで seq の出力を xargs にパイプします