bash - 如何转义 ssh/remote bash 命令中的单引号字符?

标签 bash ssh quoting

我正在构建一小组用于远程启动、停止和检查进程状态的脚本。这些脚本的 stop 应该查找进程并终止它。因此我这样做:

ssh deploy@hera 'kill -9 `ps -ef | grep MapReduceNode | grep -v "grep" | awk -F " " '{print $2}' | head -n 1`'

这里的问题是 awk 标记化步骤需要单引号,并且这些与用于通过 ssh 执行远程命令的单引号发生冲突。如何转义这些单引号?

最佳答案

使用

ssh deploy@hera 'kill -9 `ps -ef | grep MapReduceNode | grep -v "grep" | awk -F " " '"'"'{print $2}'"'"' | head -n 1`'

说明:

ssh deploy@hera 'kill -9 `ps -ef | grep MapReduceNode | grep -v "grep" | awk -F " " '"'"'{print $2}'"'"' | head -n 1`'
                >                               1                                   <>2<>    3     <>4<>      5      <

1) 以命令开头的第一个字符串:'kill -9 `ps -ef | grep MapReduceNode | grep MapReduceNode | grep MapReduceNode grep -v“grep”| awk -F“”'

2) 仅包含一个 ' 字符的第二个字符串:"'"

3) 带有打印命令的第三个字符串:'{print $2}'

4) 第四个字符串带有另一个单引号:"'"

5) 第五个字符串以及命令的其余部分:' |头-n 1`'

关于bash - 如何转义 ssh/remote bash 命令中的单引号字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53113296/

相关文章:

windows - git-bash.exe : how to run single command?

linux - 为什么在 bash 中的 while read 循环中重定向 stdin?

linux - 如何将多个文件的内容附加到一个文件中

mongodb - 为远程 MongoVUE GUI 访问设置 CentOS 防火墙

powershell - 如何在 PowerShell 中将参数作为 -file 的一部分传递

node.js - 如何向Docker容器发送命令?

php - 使用 PHP SSH2 打开流时使用 ~/.ssh/config

github:没有可用的受支持的身份验证方法

powershell - 为什么尾随反斜杠会破坏 Powershell 参数解析?

python - 使用 pyparsing,如何解析以反斜杠结尾的带引号的字符串