私はbashスクリプトに最初に触れました、そしてコマンドの集計に関する質問があります。次のコード行にあります。
timeout -s 9 1 echo $var | nc localhost port
netcatを介して特定のポートのlocalhostに変数varのデータを送信しようとしていますが、コマンド時間を1秒超過したいと思います。タイムアウトに関するマニュアルページを読むと、次のように使用する必要があることを理解しています。
timeout -s SIGNAL TIME COMMAND
私の質問は、COMMAND nc localhostポートをパイプされたコマンドecho $ var |に置き換えて、次のケースを正しく作成する方法を理解する方法です。
COMMAND1 | (COMMAND2 | COMMAND3)
そして
(COMMAND1 | COMMAND2) | COMMAND3
私が正しい場合、2番目の例は次のとおりです。
COMMAND1 | COMMAND2 | COMMAND3
しかし、最初の記事をどのように書くのかわかりません。
ベストアンサー1
代わりに COMMAND がtimeout
解釈されます。サブシェル(およびbash
その中にパイプコマンド)を配置することはできません。(
)
コマンドをシェルスクリプトに入れ、その名前をtimeout
。
あるいは、実際にCOMMANDをにbash
強制するだけです。
timeout -s 9 1 bash -c "echo $var | nc localhost port"