此命令不起作用:
ssh $HOST "ls -l | awk '{print $1}'"`
Run Code Online (Sandbox Code Playgroud)
以上忽略命令awk。我想这可能是因为双引号?
另外,如何在 awk 中添加另一组双引号?
IE:
ssh $HOST "awk '{print $1 "*"}' /some_file"
Run Code Online (Sandbox Code Playgroud)
我试过转义引号,我什至试过这个:
ssh $HOST "awk '{print $1 "\""*"\""}' /some_file"
Run Code Online (Sandbox Code Playgroud)
没有成功。
Dav*_*d Z 19
变量替换双引号中进行的,所以这里就是我想可能发生的:当你输入ssh $HOST "ls -l | awk '{print $1}'",你的shell(在本地计算机上的一个,在那里你正在运行SSH客户端)看到$1的双引号和替换它与内变量的值,该值$1将为空。它无法检测到$1嵌套在双引号内的单引号内。所以最终被发送到远程服务器的是
ls -l | awk '{print }'
Run Code Online (Sandbox Code Playgroud)
这基本上相当于
ls -l | cat
Run Code Online (Sandbox Code Playgroud)
即它只是打印输出ls -l.
解决方案:$用反斜杠转义,
ssh $HOST "ls -l | awk '{print \$1}'"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12582 次 |
| 最近记录: |