Linux,CentOS - 比较2个文件我使用命令
comm --check-order -1 --output-delimiter=----- <sort(file1.txt) <sort (file3.txt) > result.txt ;
它适用于shell,但是当我尝试创建一个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
我已经尝试过使用圆括号转换的变体,例如
sort\(file1.txt\)
或
sort'(file1.txt)'
但是这个案例shell说
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 :(得分: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 :(得分:0)
要解决此问题,而不是标记命令,而是标记文件
答案 2 :(得分:-1)
进程替换将整个命令放入parens。
... <(sort ...) ...