我在shellcript中运行diff时遇到问题,它是syntax error near unexpected token
('`
代码:
我有2个文件文件A,文件B,我想要比较2个文件并在脚本中使用:
diff <( sort fileA ) <( sort FileB )
但运行时出现错误:
syntax error near unexpected token `('
请帮帮我! 谢谢大家!
答案 0 :(得分:2)
归功于@shellter。您正在使用的构造称为process substitution,它不是由POSIX标准定义的,因此您不能依赖所有实现此功能的shell。
此外,当您遇到这样的问题时,请务必确保您实际上是通过您打算使用的shell运行脚本,如果您在此处提出有关shell脚本的问题,请提及您正在使用的shell或者你需要将问题作为目标,因为这会产生很大的不同。
以下是一些示例,以证明这适用于例如bash
和ksh
,但不是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 `('