0

我有一个很长的字符串 ssh_cmd,我从

cmd = """kill -9 `ps -ef|grep "udp_receiver"|grep -v "grep"|awk '{print $2}'`"""
HostName="133.33.22.1"
ssh_cmd = """ssh -t inria_spoofing@{0} 'sudo nohup bash -c "{1} > /nohup.out 2>&1 &"'""".format(HostName, cmd)

结果ssh_cmd是:

ssh -t kitty@133.33.22.1 'sudo nohup bash -c "kill -9 `ps -ef|grep "udp_receiver"|grep -v "grep"|awk '{print $2}'` > /nohup.out 2>&1 &"'

但是,我害怕当我跑步时

child = pexpect.spawn(ssh_cmd)

有问题,那么如何组织字符串呢?谢谢!

4

1 回答 1

0

要回答这个问题,这里是正确的ssh_cmdssh -t kitty@133.33.22.1 "sudo nohup bash -c \"kill -9 \\\`ps -ef | grep 'udp_receiver' | grep -v 'grep' | awk '{print \\\$2}'\\\` > /nohup.out 2>&1 &\""

基本上,每次将命令嵌入另一个命令时,都需要在命令中转义双引号、反引号和反斜杠。除了在较低级别之外,我没有使用单引号,因为您不能在单引号内使用转义的单引号。

当它只是用双引号引起来的字符串中的一个字符时,您确实需要转义$,即使该字符串也包含单引号。

于 2013-05-01T15:12:06.393 回答