2016-04-03 40 views
0

的Linux,CentOS的语法错误 - 比较2个文件我用命令bash脚本COMM和排序问题近意外的标记

comm --check-order -1 --output-delimiter=----- <sort(file1.txt) <sort (file3.txt) > result.txt ; 

和它的作品上的外壳,但是当我试图创建一个bash文件 - 我有

syntax error near unexpected token `(' 

剧本是最简单的

#!/bin/bash 
cd /var/www/html/compare/ ; 
comm --check-order -1 --output-delimiter=----- <sort(file1.txt) <sort (file3.txt) > result.txt ; 
exit ; 
    sh 

我已经尝试过用圆括号升逃逸变化IKE

sort\(file1.txt\) 

sort'(file1.txt)' 

,但这种情况下壳说

sort(file1.txt)...: No such file or directory 

我有绝对路径试过像

<sort\(var/www/html/compare/file1.txt\) 

相同的结果, “没有这样的文件”

,我已经尝试运行与变化的剧本就像

sh /a/compare.sh 
bash /a/compare.sh 
chmod +x /a/compare.sh; ./a/compare.sh 

还是同样的问题。

所以我有OR“没有这样的文件...”与括号转义 - 或“其他情况下的意外令牌”。

在此先感谢您的任何想法尝试,可能应该是一个正确的“混合”的语法?

+0

[shellcheck to rescue!](http://www.shellcheck.net/) – jDo

回答

1

经过多次组合,我找到了解决方案,我们需要强制BASH进行一些特定的转义。 该剧本作品

#!/bin/bash 
cd /var/www/html/compare/ ; 
`bash -c "comm --check-order -1 --output-delimiter=----- <(sort file1.txt) <(sort file2.txt) > result.txt" ` ; 
exit ; 
    sh 

希望能帮助别人节省时间。

1

流程替换将整个命令放在parens中。

... <(sort ...) ... 
+0

我没有明白你的意思。我试着像你说的语法... ... Serge

+0

这句法并不像我说的那样。 –

相关问题