【发布时间】:2017-01-04 15:37:36
【问题描述】:
我正在尝试将变量从 python 脚本发送到 bash 脚本。我正在使用popen,如下所示:
subprocess.Popen(["bash", "-c", ". mainGui_functions.sh %d %s" % (commandNum.get(), entryVal)])
但是,entryVal 有时可以包含一个或多个空白字符。在这种情况下,我将字符串分成多个参数 ($2,$3..)
我怎样才能在一个论点中得到它?
【问题讨论】:
-
尝试添加mainGui_functions.sh的完整路径。
-
您是否尝试过在 entryVal 周围添加引号...类似
"%d \"%s\"" -
也许这可能会有所帮助,来自 bash 脚本结尾 stackoverflow.com/questions/1983048/…
-
另外,考虑使用
str.format而不是插入%字符,以获得更 Pythonic 的风格。 -
启动一个 Bash 实例,以便您可以获取文件然后立即退出,这很奇怪。除非这是现实中更复杂事物的简化版本,否则您只需要
Popen(['bash', 'mainGui_functions', str(commandNum.get()), entryVal])(如果脚本具有执行权限和适当的 shebang 行,也可以省略'bash')。
标签: python bash subprocess