Answers:
变量插值是在双引号内执行的,所以这是我想发生的事情:键入时ssh $HOST "ls -l | awk '{print $1}'"
,您的外壳程序(运行SSH客户端的本地计算机上的外壳)会$1
在双引号内看到并替换为变量的值$1
,将为空白。它无法检测到$1
嵌套在双引号内的单引号中。因此,最终发送到远程服务器的是
ls -l | awk '{print }'
这基本上相当于
ls -l | cat
即它只是打印出的输出ls -l
。
解决方案:$
以反斜杠转义,
ssh $HOST "ls -l | awk '{print \$1}'"