繁体   English   中英

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

[英]How to send a string with spaces from Python to Bash sub-process as a single value?

我正在尝试将一个变量从python脚本发送到bash脚本。 我正在使用如下所示的popen

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM