Linux bashスクリプト - コマンドのグループ化

Linux bashスクリプト - コマンドのグループ化

私は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"

おすすめ記事