1

在 shellscript 中运行 diff 时出现问题,它是syntax error near unexpected token('` 代码:

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

diff <( sort fileA ) <( sort FileB )

但是当运行它的get错误时:

syntax error near unexpected token `('

请帮我!谢谢大家!

4

1 回答 1

2

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

此外,当您遇到此类问题时,请始终确保您实际上是通过您打算使用的 shell 运行脚本,如果您在此处询问有关 shell 脚本的问题,请说明您正在使用或需要哪个 shell您要针对的问题,因为这可能会产生很大的不同。

以下是一些示例来证明这在 egbash和中有效ksh,但在 eg 中无效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 `('
于 2013-04-11T13:45:55.337 回答