在 python 的 subprocess.call 函数中使用带有空格的字符串

在 python 的 subprocess.call 函数中使用带有空格的字符串

我试图在Unix环境下的函数ssh中使用命令来调用远程脚本,并且我需要向远程脚本提供一个字符串参数(带空格)。但是,当我运行 python 脚本时,字符串参数没有被正确解释。subprocess.callPython 2.6.8

这是我的 python 脚本:-

 #!/usr/bin/python

 from subprocess import call

 ret=call(['ssh','user@host','\"/remote/path/to/script/test.sh','\'Hi','There\'\"'])

print ret

ret2=call(['ssh','user@host','/remote/path/to/script/test.sh','Hello'])

print ret2

我收到以下带有错误的输出,并且returncode 127对于带有“空白字符串”的 ssh 命令,第二个 ssh 命令运行良好returncode 0:-

bash: /remote/path/to/script/test.sh 'Hi There': No such file or directory

127

Hello

0

当我在 shell 命令行终端上运行相同的 shell 命令时,它会成功执行:-

Command:

ssh user@host "/remote/path/to/script/test.sh 'Hi There'";echo $?

Output:

Hi There

0

这是远程脚本的内容/remote/path/to/script/test.sh(如果有帮助):-

#!/usr/bin/ksh

echo $1;

答案1

您只需要引用用 替换工作版本的字符串Hello,即'"Hi There"'

ret = call(['ssh','user@host','/remote/path/to/script/test.sh','"Hi There"'])

相关内容