根據維基百科的說法,「過程替換也可用於捕獲通常會轉到文件並將其重定向到進程輸入的輸出。」(http://en.wikipedia.org/wiki/Process_substitution)。因此,用我自己的話來說,這意味着通過進程替換,我可以接收命令A的輸出並將其用作命令B的輸入。換句話說,它就像一個管道(這是否正確? )。bash前進過程替換背後發生了什麼?
因此,如果這是真的,如果我這樣做:
echo "test" >(wc)
話,我應該會得到如下:
1 1 5
,因爲我上面的命令的理解是類似於以下:
$echo "test" > tmp
$wc tmp
1 1 5 tmp
除了我不使用進程替換的tmp文件。
而是我得到以下輸出:
test /dev/fd/63
這顯然表明不知我的心智模式是不正確。我錯在哪裏?
我明白<(命令)。例如
$diff <(head file1) <(head file2)
完全有道理。但不是>(命令)。
或者,更簡單地,可使用:'回波測試>>(WC)',它重定向的「echo'輸出由所述進程替換指定的文件。 –
@JonathanLeffler哇!我真的很感動。所以,這個名字不會作爲參數傳遞,而是從字面上追加到命令字符串中。謝謝。 –
查看在[shell擴展]在'bash'手冊的討論(http://www.gnu.org/software/bash/manual/bash.html#Shell-Expansions)並按照其描述了特定的擴展部分,並且然後在所有擴展之後發生[重定向](http://www.gnu.org/software/bash/manual/bash.html#Redirections)。 –