Bash 使用 COMM 和 SORT 的脚本在意外标记附近出现语法错误
Bash script using COMM and SORT issues syntax error near unexpected token
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\)
同样的结果"No such file"
并且我已经尝试过 运行 脚本的变体
sh /a/compare.sh
bash /a/compare.sh
chmod +x /a/compare.sh; ./a/compare.sh
还是一样的问题。
所以我有 OR "No such file..." 转义括号 - OR "unexpected token"在其他情况下。
提前感谢任何尝试的想法,可能应该是正确的 "mix" 语法?
进程替换将整个命令放在括号中。
... <(sort ...) ...
经过多次组合后,我找到了我们需要强制 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
希望能帮助别人节省时间。
!/usr/bin/env bash
要解决它,而不是标记命令,标记文件
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\)
同样的结果"No such file"
并且我已经尝试过 运行 脚本的变体
sh /a/compare.sh
bash /a/compare.sh
chmod +x /a/compare.sh; ./a/compare.sh
还是一样的问题。
所以我有 OR "No such file..." 转义括号 - OR "unexpected token"在其他情况下。
提前感谢任何尝试的想法,可能应该是正确的 "mix" 语法?
进程替换将整个命令放在括号中。
... <(sort ...) ...
经过多次组合后,我找到了我们需要强制 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
希望能帮助别人节省时间。
!/usr/bin/env bash
要解决它,而不是标记命令,标记文件