在Heredoc中传递给SSH时,Awk脚本不起作用

汤姆

当我在命令行上运行它时,它可以正常工作

awk 'BEGIN{FS=OFS=","}/^AAA/{$3="QQQ"}1' test.txt > newtest.txt

但是,当我尝试在SSH到远程服务器的bash脚本中运行此脚本时,它会因语法错误而失败,但是我看不到它在哪里失败。看起来它指向命令中的FS。

我正在执行以下操作:

sshpass -p "password" ssh [email protected] /bin/bash << EOF

  echo password | sudo -u root -S awk 'BEGIN{FS=OFS=","}/^AAA/{$3="QQQ"}1' test.txt  > newtest.txt

EOF

SSH连接正常,但是awk命令失败。任何想法如何解决这个问题?

谢谢

查尔斯·达菲

<<EOF未引用的Heredoc中。在这些内部,无论任何内部引号,都将执行所有参数扩展。

如果要$3传递给您awk而不用替换外壳中该扩展的值,则需要使用带引号的heredoc:,<<'EOF'而不是<<EOF

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章