連続パイプライン入力コマンド

連続パイプライン入力コマンド

コマンドに常に値を渡す方法はありますか?たとえば、command.pl入力したresponse後にy確認(自動で確認する方法がないため)でき、必要に応じてどうすればよいですか?

これを試してみましたが、echo "y" | echo "response" | ./command.plパイプの順序が左から右であるため、動作しません。デフォルトでは、次のコマンドを実行する前にパイプラインを実行する必要があります。かっこや引用符などのトリックはありますか?

ベストアンサー1

最も簡単な解決策は、2つのechoコマンドを組み合わせることです。

echo $'y\nresponse' | ./command.pl

$単一引用符と前にaを使用して文字列を作成すると、bashになどのエスケープシーケンスを解釈するように指示します\n

渡すコマンドがより複雑な場合は、中かっこでグループ化できます。

{ echo y; echo response; } | ./command.pl

括弧も機能しますが、不要な追加のサブシェルを作成します(やや効率が悪い)。

(echo y; echo response) | ./command.pl

別のオプションはプロセスの交換です。

./command.pl < <(echo y; echo response)

おすすめ記事