Bash

執行 diff <(cat old) <(cat new) 時使用什麼 fd?

  • June 6, 2014

如果我做:

diff &lt;(cat old) &lt;(cat new)

鋤頭在內部對 diff 程序有效嗎?我如何用 bash 腳本做同樣的事情?

你可以自己試試:

echo &lt;(echo) &lt;(echo)

Diff 只是從兩個文件中讀取。

如果您想將其&lt;(...)用作 bash 腳本的參數,請記住您不能“倒回”文件(或重新打開)。所以一旦你讀了它,它就消失了。您可以使用read它來逐行處理它,您可以使用grep它或其他任何東西。如果您需要多次處理它,請將其內容保存到變數中

input=$(cat "$1"; printf x) # The "x" keeps the trailing empty lines.
input=${input%x}

或將其複製到臨時文件並反复閱讀:

tmp=$(mktemp)
cat "$1" &gt; "$tmp"

引用自:https://unix.stackexchange.com/questions/134802