错误“意外令牌附近的语法错误`('”在shell脚本中添加diff命令时

时间:2013-04-11 09:11:22

标签: shell

我在shellcript中运行diff时遇到问题,它是syntax error near unexpected token('` 代码:

我有2个文件文件A,文件B,我想要比较2个文件并在脚本中使用:

diff <( sort fileA ) <( sort FileB )

但运行时出现错误:

syntax error near unexpected token `('

请帮帮我! 谢谢大家!

1 个答案:

答案 0 :(得分:2)

归功于@shellter。您正在使用的构造称为process substitution,它不是由POSIX标准定义的,因此您不能依赖所有实现此功能的shell。

此外,当您遇到这样的问题时,请务必确保您实际上是通过您打算使用的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 `('