3

プロセス置換を理解するのに苦労しています。私の知る限りでは、

echo abcd | tr -d 'b'
tr -d 'b' <(echo abcd)

どちらも同じ出力を与えるはずです。しかし、最初のものは機能します(出力は「acd」です)が、2番目のものは言う

tr: extra operand '/dev/fd/63'

どうしてこれなの?tr はパイプを介して「abcd」を受け取るだけで、「/dev/fd/63」も受け取りませんか?

4

1 に答える 1

5

プロセス置換が機能する方法は、Bash が<(echo abcd)(たとえば)/dev/fd/63に置換することです。これは、最も一般的な *nix ユーティリティがファイル名のように扱い、標準入力の代わりに開きます。trただし、ファイル名の引数は受け入れません。標準入力のみを取ります。

標準入力での結果を渡すには、<(echo abcd)別の を使用できます<

tr -d b < <(echo abcd)
于 2013-02-18T17:23:43.680 に答える