如何将带有空格的字符串从Bash子进程发送为单个值?

时间:2016-08-28 14:07:03

标签: python bash subprocess

我试图将变量从python脚本发送到bash脚本。我使用popen,如下所示:

subprocess.Popen(["bash", "-c", ". mainGui_functions.sh %d %s" % (commandNum.get(), entryVal)])

但是,entryVal有时可以包含一个或多个空格字符。在这种情况下,我将字符串分成多个参数($ 2,$ 3 ..)

我怎样才能在一个论点中得到它?

2 个答案:

答案 0 :(得分:4)

简单的解决方案#1:如果您在命令行上输入输入,那么就像执行此操作一样;把它放在引号中:

subprocess.Popen(["bash", "-c", ". mainGui_functions.sh {} '{}'".format(commandNum.get(), entryVal)])

简单的解决方案#2:如果mainGui_functions.sh已经可执行,那么您可以直接省略bash部分和pas参数。在这种情况下,subprocess负责确保将具有空格的条目作为单个arg结束:

subprocess.Popen(["mainGui_functions.sh", str(commandNum.get()), entryVal])

答案 1 :(得分:0)

在bash命令行中添加引号 - 例如,

subprocess.Popen(['bash', '-c', '. mainGui_functions.sh %d "%s"' % (commandNum.get(), entryVal)])