该命令不起作用:
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}'"