我被困在'加入' 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'
对comm
和sort
命令提出了类似的查询,但这对join
Bash script using COMM and SORT issues syntax error near unexpected token
答案 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