Reputation: 178
I'm trying to call some shell program that use the environment and I'm trying to figure out the correct way. I boiled down to this snippet:
import subprocess as sp
p = sp.Popen(["echo","Hello","$FOO"], env = {"FOO":"42"}, stdout = sp.PIPE, shell = True)
p.wait()
print(p.communicate())
When "shell" is set to True it prints "('\n', None)" and when it's set to False it prints "('Hello $FOO\n', None)", but I was expecting it to print something along the lines of "('Hello 43\n', None)". What I'm doing wrong and is there a better way to do it?
Upvotes: 3
Views: 1875
Reputation: 1026
Try this:
p = sp.Popen("echo Hello $FOO", env={"FOO":"42"}, shell=True)
The output should be "Hello 42"
Upvotes: 5