2013-04-11 114 views
0

在shell腳本運行的差異時,我有一個問題,加上diff命令,這是syntax error near unexpected token('` 代碼:錯誤「附近意外的標記語法錯誤'(」」時,在shell腳本

我有一個2檔文件,文件B,我想比較兩個文件,並使用腳本:

diff <(sort fileA) <(sort FileB) 

但運行其出現錯誤時:

syntax error near unexpected token `(' 

請幫我!謝謝大家!

+0

你想區分排序後的文件A和排序後的文件B嗎? – 2013-04-11 09:18:18

+0

我已在本地簽到,並且在我的電腦上正常工作。 UHMS。 – fedorqui 2013-04-11 09:22:15

+0

在bash中正常工作 – 2013-04-11 09:25:21

回答

2

功勞歸於@shellter。您使用的構造稱爲process substitution,它不是由POSIX標準定義的,因此您不能依賴實現此功能的所有外殼。另外,當你遇到這樣的問題時,一定要確保你實際上通過你打算使用的shell來運行你的腳本,如果你在這裏提出關於shell腳本的問題,請提及你使用的是哪個shell或者您需要將您的問題作爲目標,因爲這可能會產生很大的差異。

下面是一些例子,以證明它適用於例如bashksh,但不是例如。 dash

$ bash -c 'diff <(sort file1) <(sort file2)' 
2c2 
< file1 
--- 
> file2 

$ ksh -c 'diff <(sort file1) <(sort file2)' 
2c2 
< file1 
--- 
> file2 

$ dash -c 'diff <(sort file1) <(sort file2)' 
dash: 1: Syntax error: "(" unexpected 

$ sh -c 'diff <(sort file1) <(sort file2)' 
sh: -c: line 0: syntax error near unexpected token `(' 
相關問題