如何将参数传递给exec(open()。read())?

时间:2019-02-23 01:36:27

标签: python operating-system subprocess command-line-interface exec

编写一个脚本来自动安装Web程序集git repo。它下载存储库,调用命令进行设置。

我正在按照该网站的说明进行操作:https://webassembly.org/getting-started/developers-guide/

目标行为:
$ source ./emsdk_env.sh --build=Release

这在Python中并不是那么容易,因为子进程似乎并没有削减它。我找到了exec(open("filename.sh").read())命令,但无法弄清楚如何传递
--build=Release参数。

我认为这是一个键值元组,需要这样传递,但是如何做到这一点也不容易。 这是我正在尝试的当前代码:

with open(emsdk_envFile) as f:
    code = compile(f.read(), emsdk_envFile, 'exec')
    exec(code, 'Release')

这是我得到的CLI输出:

  File "installWebAssembly.py", line 184, in main
    code = compile(f.read(), emsdk_envFile, 'exec')
  File "/home/bcuser/Git/emsdk/emsdk_env.sh", line 19
    if [ "$SRC" = "" ]; then
                ^
SyntaxError: invalid syntax

建议使用子过程。但是,当我在Subprocess.call()中运行详细命令时,得到以下输出:

subprocess.call('source /home/bcuser/Git/emsdk/emsdk_env.sh --build=Release', shell=True)
...
$ python myScript.py
OUTPUT:
/bin/sh: 1: source: not found
/bin/sh: 1: source: not found

最终目标是自动化安装和使用Web Assembly所需的所有步骤。 emsdk_env.sh 文件的目的是在PATH中添加相关的环境变量和目录条目,以设置当前终端以方便使用编译器工具。

0 个答案:

没有答案