GNU/Linux >> Linux の 問題 >  >> Linux

bashシェルを使用してコマンドを複数回実行する方法は?

解決策 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 にパイプします


Linux
  1. X秒ごとにLinuxコマンドを実行または繰り返す方法

  2. 複数のリモートシステムで単一のコマンドを一度に実行する方法

  3. シェルから Vim コマンドを実行するには?

  1. [Linux]:「tar」シェルコマンドを使用するときにディレクトリを除外する方法

  2. Linux で ip コマンドの例を使用して複数のルートを追加する方法

  3. ウォッチを使用してBashで関数を繰り返し実行しますか?

  1. Linux で制限付き Bash シェルを構成する方法

  2. Unix コンソールまたは Mac 端末でシェル スクリプトを実行するには?

  3. Linux コマンドを使用してシェルのバージョンを確認するにはどうすればよいですか?