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

Bash でコマンドのグループをタイムアウトする方法

また、Here Document EOF メソッドを使用して、複数行のスクリプトをその場で作成することもできます。その主な利点は、エスケープせずに二重引用符を使用できることです。 それ:

timeout 1s bash <<EOF
    sleep 2s
    echo "something without escaping double quotes"  
EOF

注:

<オール>
  • EOF クロージャーは、スペースやタブの後に続けてはいけませんが、最終行の先頭に置く必要があります。
  • export -f my_func でローカル関数をエクスポートしたことを確認してください または set -o allexport すべての関数に対して (宣言する前)。 これは以前の回答に関連しています また、bash/sh を呼び出すと新しいセッションでプロセスが実行されるため、ローカル環境の機能を認識しません。

  • timeout はシェル ユーティリティではなく、シェル スタイルの処理を行いません。実行するには、1 つのコマンドを指定する必要があります。ただし、このコマンドには任意の数の引数を指定できます。幸いなことに、指定できるコマンドの 1 つは bash です。 :

    timeout 1 bash -c '{ sleep 2; echo something; }'
    

    もちろん、この形式では中括弧は不要です:

    timeout 1 bash -c 'sleep 2; echo something'
    

    ここでは、bash timeout というコマンドです 実行します。 -csleep 2; echo something そのコマンドの引数です。


    Linux
    1. Bashスクリプトをデバッグする方法は?

    2. cronシェルを変更する方法(shからBash)?

    3. バッシュを検出する方法>=4.0?

    1. Bash履歴コマンドの使用方法

    2. Bash履歴に保存されるコマンドの数を変更する方法

    3. Bashで特定のタイムアウト後に子プロセスを強制終了する方法は?

    1. LinuxのbashコマンドをPERLスクリプトで実行する方法は?

    2. 特定のコマンドにカスタムオートコンプリートを指定するにはどうすればよいですか?

    3. xargs でエイリアス化されたコマンドを使用するにはどうすればよいですか?