Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Escape单引号ssh远程命令_Bash_Ssh_Quotes_Double Quotes - Fatal编程技术网

Bash Escape单引号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远程命令的转义单引号的任何解决方案。但任何工作都可以

我正在努力

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