質問
パイプが実際に存在するときにパイプにリダイレクトするためにシェルが、およびのよう<<<
な< <(command)
代替を実装するのはなぜですか?< /dev/fd/*
stdin
はい
方式|
(クラシックパイプライン)
echo 'text' | sed 's/x/y/'
# or
cat - | sed 's/x/y/' # type text afterwards
<<<
道路
sed 's/x/y/' <<< 'text'
< <(command)
道路
sed 's/x/y/' < <(echo 'text')
# while <(command) becomes a file descriptor like
sed 's/x/y/' < /dev/fd/42
みんな戻ってきてくださいteyt
。
ベストアンサー1
ソトは主に審美的な理由に興味を持っていましたが、技術的な理由もありました。たとえば、パイプラインは右側に子プロセスを作成することがよくあります。つまり、後で使用したい状態や変数を設定できないという意味です。比較する:
$ echo foo > file
$ line=bar; cat file | read -r line; echo "$line"
bar
$ line=bar; read -r line < file; echo "$line"
foo