在双引号内 Awk 不起作用

在双引号内 Awk 不起作用

该命令不起作用:

ssh $HOST "ls -l | awk '{print $1}'"`

上面忽略了命令awk。我想可能是因为双引号?

另外,如何在 awk 中添加另一组双引号?

IE:

ssh $HOST "awk '{print $1 "*"}' /some_file"

我尝试去掉引号,甚至尝试这样做:

ssh $HOST "awk '{print $1 "\""*"\""}' /some_file"

没有成功。

答案1

变量插值是在双引号内执行的,所以我认为可能发生的情况如下:当您输入 时ssh $HOST "ls -l | awk '{print $1}'",您的 shell(在本地计算机上运行 SSH 客户端的 shell)会$1在双引号内看到并将其替换为变量的值$1,该值将为空白。它无法检测到$1嵌套在双引号内的单引号中。因此,最终发送到远程服务器的是

ls -l | awk '{print }'

这基本上相当于

ls -l | cat

即它只是打印出的输出ls -l

解决方案:$使用反斜杠转义,

ssh $HOST "ls -l | awk '{print \$1}'"

相关内容