Bash Escape单引号ssh远程命令
我读过关于ssh远程命令的转义单引号的任何解决方案。但任何工作都可以 我正在努力Bash Escape单引号ssh远程命令,bash,ssh,quotes,double-quotes,Bash,Ssh,Quotes,Double Quotes,我读过关于ssh远程命令的转义单引号的任何解决方案。但任何工作都可以 我正在努力 ssh root@server "ps uax|grep bac | grep -v grep | awk '{ print $2 }' > /tmp/back.tmp" 不要工作得太累 ssh root@server "ps uax|grep bac | grep -v grep | awk \'{ print $2 }\' > /tmp/back.tmp" .... awk: '{ awk: ^
ssh root@server "ps uax|grep bac | grep -v grep | awk '{ print $2 }' > /tmp/back.tmp"
不要工作得太累
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
尝试在命令上设置单个配额,但也不起作用
a特定帮助在第一次尝试中,您使用了双引号
“
,因此需要转义$
字符:
ssh root@server "ps uax|grep bac | grep -v grep | awk '{ print \$2 }' > /tmp/back.tmp"
▲
此外,您还可以使用:
ps uax | grep 'ba[c]' | ...
因此,您不需要执行
grep-v grep
步骤。ssh命令将主机名后键入的所有文本视为要执行的远程命令。这对您的问题来说至关重要的是,您不需要像以前那样引用整个命令。相反,您可以像键入命令一样发送命令将其视为远程系统本身
这简化了对引号问题的处理,因为它减少了需要使用的引号的数量。由于不使用引号,所有特殊bash字符都需要用反斜杠转义
在你的情况下,你需要打字
ssh root@server ps uax \| grep ba[c] \| \'{ print \$2 }\' \> /tmp/back.tmp
或者您可以双引号而不是转义单引号(在这两种情况下,您都需要转义美元符号)
老实说,这感觉有点复杂,但我发现在处理向远程系统发送命令时,这些知识非常有价值,因为这些命令涉及到更复杂的引号使用。Wauuuuuuu…非常感谢…为这个问题花费了太多的钱…美好的一天
ssh root@server ps uax \| grep ba[c] \| "'{ print \$2 }'" \> /tmp/back.tmp