在 shellscript 中运行 diff 时出现问题,它是syntax error near unexpected token
('` 代码:
我有一个 2 文件文件 A,文件 B,我想比较 2 个文件并在脚本中使用:
diff <( sort fileA ) <( sort FileB )
但是当运行它的get错误时:
syntax error near unexpected token `('
请帮我!谢谢大家!
在 shellscript 中运行 diff 时出现问题,它是syntax error near unexpected token
('` 代码:
我有一个 2 文件文件 A,文件 B,我想比较 2 个文件并在脚本中使用:
diff <( sort fileA ) <( sort FileB )
但是当运行它的get错误时:
syntax error near unexpected token `('
请帮我!谢谢大家!
归功于@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 `('