因此,我正在尝试从 awk 脚本中执行 diff ......
cmd="diff <(echo \""bServers[nonServers]"\") <(echo \""primeReference"\")"
print cmd
while (( cmd | getline result) > 0 ) {print result}
close(cmd)}
...其中 bServers[nonServers] 和 primeReference 评估为没有特殊字符的普通字符串。因此“打印cmd”产生......
diff <(echo "
> /var/tmp/text1.txt 818e9c0fc3dd92e86c80704419b1cc0d") <(echo "
> /var/tmp/text2.txt 00efcc10b376dbdd6d0972635eb650c4")
2c2
< /var/tmp/text1.txt 818e9c0fc3dd92e86c80704419b1cc0d
---
> /var/tmp/text2.txt 00efcc10b376dbdd6d0972635eb650c4
...剪切并粘贴到命令行时效果很好。但是当作为 awk 命令的一部分运行时返回......
/var/tmp/text2.txt 818e9c0fc3dd92e86c80704419b1cc0d")
sh: -c: line 0: syntax error near unexpected token `('
'h: -c: line 0: `diff <(echo "
在左括号产生之前的单个转义反斜杠...
awk: warning: escape sequence `\(' treated as plain `('
双产...
sh: (echo: No such file or directory
三重反斜杠产生...
awk: warning: escape sequence `\(' treated as plain `('
...
sh: (echo: No such file or directory
...和四个反斜杠(为了笑)只是重复这个循环,不断增加的反斜杠无限。
外壳是 GNU bash 版本 4.1.2(1)-release,awk 是 GNU Awk 3.1.7,操作系统是 CentOS 版本 6.2(最终版)。
我也尝试过单引号的变体,但也无济于事,有人知道我的 shell-escape-foo 缺少哪里吗?