UNIX'加入'命令在意外令牌附近抛出语法错误`('

时间:2018-03-20 12:18:09

标签: bash shell unix

我被困在'加入' UNIX中的命令。

要求: 尝试通过在连接命令中嵌入sort来比较具有相似元数据的两个文件。

执行:

以下命令在命令行中顺利运行:

join -v 2 <(sort file1) <(sort file2) >difference.file 

但是当我们将这个嵌入shell脚本中时,如下所示会抛出语法错误:

脚本名称:join.sh

脚本内容:

#!/bin/bash
join -v 2 <(sort file1) <(sort file2) >difference.file
#EndOfScript

错误讯息:

./join.sh: line 1: syntax error near unexpected token `('
./join.sh: line 1: `join -v 2 <(sort file1) <(sort file2) >difference.file'

commsort命令提出了类似的查询,但这对join

没有帮助

Bash script using COMM and SORT issues syntax error near unexpected token

2 个答案:

答案 0 :(得分:3)

您可能正在使用

运行脚本
sh join.sh

这会调用/bin/sh可执行文件,它与bash特定语法(本例中的进程替换)不兼容。

使用

运行脚本
./join.sh

bash join.sh

它应该按预期工作。

答案 1 :(得分:0)

我给你一个替代选择。你可以试试这个: -

 sort file1 > file1.dat
 sort file2 > file2.dat
 join -v 2 file1.dat file2.dat > difference.file 
 rm -rf file1.dat file2.dat