次の操作はすべて効果がありません。
echo bash | bash
echo dash | dash
echo "bash -c bash" | bash
echo "dash -c dash" | dash
なぜ?たとえば、最初の行では bash インスタンスを作成し、それ入力を待つ別のbashインスタンスが作成されます。ただし、入力を待たずに終了します。親bashも終了します。したがって、両方のbashインスタンスがシャットダウンされ、このコマンドを起動したシェルインスタンスに戻ります。私はどこで間違って理解しましたか?
答え1
2番目のbashインスタンスするbash
stdin(文字列を読み取るパイプと同じ)で入力を待ちますが、プロセスが終了してecho
パイプの書き込み終了が閉じたときにのみEOFを受け取ります。
2番目のbashにいくつかの入力を提供することもできます。
(echo bash; echo echo hjello) | bash
hjello