我正在尝试使用ssh将命令传递给远程服务器。虽然我的命令包含"
,$
,'
,\
等字符,但除'
(单引号)外,通常需要使用反斜杠作为转义字符,但是系统在执行时会在单个代码之前自动获取转义字符\
。有人可以帮我解决这个问题。
操作系统:RHEL
我的代码:
ssh -q $server "ps -ef | grep mongo | grep conf | awk '{print \$(NF-2)}'
执行时,代码变为
ssh -q $server "ps -ef | grep mongo | grep conf | awk \'{print $(NF-2)}\'"
我需要关闭此功能
答案 0 :(得分:1)
您的分析并不正确。无论如何,没有特别的理由远程运行Awk,或者grep
在这里(因为Awk通过非常小的重构很好地和有效地完成了所有这些):
ssh -q "$server" ps -ef |
# This runs locally instead
awk '/mongo/ && /conf/ {print $(NF-2)}'