蟒蛇os.environ变量没有在bash脚本传递 [英] python os.environ variable do not pass in the bash script

查看:211
本文介绍了蟒蛇os.environ变量没有在bash脚本传递的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个python脚本(使用伪终端)来传递被称为CDP环境变量:

I have a python script (using a pseudo-terminal) to pass an environment variable called "CDP":

def download(self, dPluzz, donnees=None):        # to call the bash script
    self.child_pid = self.v.fork_command(None, ['/bin/bash', 'dPluzz-cli', '-f', dest, '-u', adresse])   
    os.environ["CDP"] = "False"                  # set cancel as "False"
def cancel(self, dPluzz, donnees=None):
    if self.annul == 0:
      if self.time > 10 and self.percent != 100:
         os.environ["CDP"] = "True"
         print os.environ["CDP"]                 # returns True
         self.child_pid = str(self.child_pid)
         cmd = 'kill -TERM' + " " + self.child_pid
         subprocess.Popen(cmd, shell=True)
def __init__(self):                              #Pseudo-Terminal in GTK window     
      self.v = vte.Terminal()                    #(displayed in a notebook)
      self.v.connect ("child-exited", lambda term: self.verif(self, a))
      self.v.connect('contents-changed', self.term)
      self.v.set_size(70,20)
      self.v.set_encoding("UTF-8")  
      self.v.set_cursor_blinks(False) 
      self.v.show()
      self.page.add(self.v)

在bash脚本是:

The bash script is:

kill_jobs()
{
    pkill -TERM -P "$BASHPID"
    echo -e "$CDP"                                # returns False, should be True
    if [ "$CDP" == "True" ]; then
    echo -e "OPERATIONS ANNULEES"
    elif [ "$CDP" == "False" ]; then
    echo -e "OPERATIONS TERMINEES"
    fi
}

问题是, $ CDP =假这样显示的消息并不好。
是什么原因?
谢谢

The problem is, $CDP = False so the message displayed is not good. What is the reason? Thanks

推荐答案

通过

os.environ["CDP"] = "True"

在你来砸只有当你通过使用os.system(调用bash脚本你可以得到这个值),os.popen()或os.fork()和os.execv()。

You can get this value in you bash only if you call the bash script via os.system(), os.popen() or os.fork() and os.execv().

所以如果你可以添加

os.system('/bin/bash script.sh')

您应能够正常使用CDP的价值bash脚本。

You shall be able to use the value of CDP in bash script normally.

请阅读 操作系统。 putenv()函数

我猜os.environ和os.putenv()是密切相关的。

I guess os.environ and os.putenv() are closely related.

这篇关于蟒蛇os.environ变量没有在bash脚本传递的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆