编写在Linux环境中运行的python程序。 在这种环境下,我无法使用paramiko等。
我编写了一系列与命令行交互的方法,其中有一个问题...
import subprocess
def echo(self, echo_arg):
cmd = subprocess.Popen(["echo", echo_arg], stdout=subprocess.PIPE)
return cmd.communicate()[0]
在Linux中,我有一个环境变量UPFW_WORK_PATH 以后再打...
self.echo("$UPFW_WORK_PATH")
返回的控制台输出实际上是:
$ UPFW_WORK_PATH
但是当我在终端中输入...
echo $UPFW_WORK_PATH
我已返回(不是实际的路径名):
/ example / file / path
是什么原因导致手动在终端上键入“ echo”和我的python方法通过子进程调用echo之间的差异
答案 0 :(得分:2)
当您从外壳程序运行echo $x
时,外壳程序会将变量扩展为其值。因此,例如,如果x的值为5,则echo
收到的参数为5。它将永远不会知道该变量。
因此解决方案是在python程序中检索环境变量的值,并将该值传递给echo:
import subprocess
import os
echo_arg = os.environ['UPFW_WORK_PATH']
cmd = subprocess.Popen(["echo", echo_arg], stdout=subprocess.PIPE)