bash - 转义单引号 ssh 远程命令

标签 bash ssh quotes double-quotes

我阅读了任何通过 ssh 远程命令转义单引号的解决方案。但是任何工作都可以。

我在努力

ssh root@server "ps uax|grep bac | grep -v grep | awk '{ print $2 }' > /tmp/back.tmp"

不要工作 awk

ssh root@server "ps uax|grep bac | grep -v grep | awk \'{ print $2 }\' > /tmp/back.tmp"
....
awk: '{
awk: ^ caracter ''' inválido en la expresión

并尝试在命令上设置单个配额,但也不起作用。

帮助帮助

最佳答案

ssh 命令将主机名后键入的所有文本视为要执行的远程命令。至关重要的是,这对你的问题意味着你不需要像你所做的那样引用整个命令。相反,您可以像在远程系统上一样直接发送命令,就好像您在远程系统上一样。

这简化了引用问题的处理,因为它减少了您需要使用的引用数量。由于您不会使用引号,因此所有特殊的 bash 字符都需要使用反斜杠进行转义

在你的情况下,你需要输入,

ssh root@server ps uax \| grep ba[c] \| \'{ print \$2 }\' \> /tmp/back.tmp

或者您可以将单引号双引号而不是转义它们(在这两种情况下,您都需要转义美元符号)

ssh root@server ps uax \| grep ba[c] \| "'{ print \$2 }'" \> /tmp/back.tmp

老实说,这感觉有点复杂,但我发现在处理向涉及更复杂的引号使用的远程系统发送命令时,这些知识非常有值(value)。

关于bash - 转义单引号 ssh 远程命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15567847/

相关文章:

PHP 生成的 javascript 和引号

bash - 使用带有 "${parameter:-word}"参数扩展的引号

bash - 静默执行 vim 命令然后在 vim 中回显

ssh - 通过 ssh 连接到 Jupyter Notebook

linux - 如何让 watch 运行带引号的 bash 脚本

mysql - MySQL 中何时使用单引号、双引号和反引号

bash - 使用管道获取进程替换的退出代码进入 while 循环

linux - 无法让 BASH 脚本等待 PID

Java - 使用 JSch 通过 ssh 隧道连接到 mysql 数据库

linux - 通过 ssh 建立 socat 连接以连接到远程虚拟 COM 端口上的设备