首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子进程"echo $ENVIRONMENT_VAR“输出"$ENVIRONMENT_VAR”

子进程"echo $ENVIRONMENT_VAR“输出"$ENVIRONMENT_VAR”
EN

Stack Overflow用户
提问于 2018-10-18 12:56:27
回答 1查看 1.7K关注 0票数 2

编写运行在linux环境中的python程序。在这种环境下我不能使用paramiko等。

我已经编写了一系列方法来与命令行交互--这个方法有问题.

代码语言:javascript
复制
import subprocess

def echo(self, echo_arg):
  cmd = subprocess.Popen(["echo", echo_arg], stdout=subprocess.PIPE)
  return cmd.communicate()[0]

在linux中,当我稍后调用时,我有一个环境变量UPFW_WORK_PATH。

代码语言:javascript
复制
self.echo("$UPFW_WORK_PATH") 

返回的控制台输出实际上是:

$UPFW_WORK_PATH

但是当我输入终端时..。

代码语言:javascript
复制
echo $UPFW_WORK_PATH 

我被返回(不是实际路径名):

/示例/文件/路径

是什么导致了在终端上手动输入" echo“与我的python方法通过子进程调用echo之间的差异?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-18 13:04:05

当您从shell运行echo $x时,将变量扩展到其值的是shell。因此,如果x的值是5,例如,echo收到的参数是5,它将永远不知道变量。

因此,解决方案是检索python程序中环境变量的值,并将该值传递给echo:

代码语言:javascript
复制
import subprocess
import os
echo_arg = os.environ['UPFW_WORK_PATH']
cmd = subprocess.Popen(["echo", echo_arg], stdout=subprocess.PIPE)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52874575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档