为什么在从Python子进程运行Terraform时,args会被分割为'='?

2024-10-02 14:29:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个terraform的Python包装器,terraform会以某种方式曲解它被传递的参数。有什么办法解决这个问题吗?在

#!/usr/bin/env python
import subprocess

args_echo = ["/bin/echo", "/home/vmindru/proj/tera/terraform",
             "plan",
             "-var foo=bar"]
args_terr = ["/home/vmindru/proj/tera/terraform",
             "plan",
             "-no-color",
             "-var foo=bar"]
echo = subprocess.call(args_echo)
terr = subprocess.call(args_terr)

print echo, terr

注意:当运行简单的echo(或任何其他二进制文件)时,下面观察到的是正确解释所有参数,出于某种原因,terraform决定将arg-var foo=bar拆分为-var foo,可能还有bar

^{pr2}$

Tags: echohome参数binfoovarbarargs
1条回答
网友
1楼 · 发布于 2024-10-02 14:29:00

记下这一点,以便日后查找,尽管@nightuser在问题评论中的回答可获得全额积分。

Python subprocess.call()函数要求参数中不存在空格,任何空格都应该是列表中独立的元素。在

在这种情况下:

args_echo = ["/bin/echo", "/home/vmindru/proj/tera/terraform",
             "plan",
             "-var foo=bar"]

变成:

^{pr2}$

相关问题 更多 >