python os.environ变量不传入bash脚本
我有一个python脚本(使用伪终端)来传递一个名为“CDP”的环境变量: bash脚本是:python os.environ变量不传入bash脚本,python,bash,environment-variables,Python,Bash,Environment Variables,我有一个python脚本(使用伪终端)来传递一个名为“CDP”的环境变量: bash脚本是: kill_jobs() { pkill -TERM -P "$BASHPID" echo -e "$CDP" # returns False, should be True if [ "$CDP" == "True" ]; then echo -e "OPERATIONS ANNULEES" elif
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=False
因此显示的消息不好。
原因是什么?
通过设置环境后,谢谢
os.environ["CDP"] = "True"
只有通过os.system()、os.popen()或os.fork()和os.execv()调用bash脚本,才能在bash中获得此值。
所以如果你能加上
os.system('/bin/bash script.sh')
您应该能够在bash脚本中正常使用CDP的值
请阅读
我想os.environ和os.putenv()是密切相关的。如果您没有设置,CDB如何设置为字符串“False”呢?很难理解您在这里想要实现的目标:(我明白了,“False”是在脚本bash调用时设置的。我稍后会编辑我的问题,我必须去吃…无论如何,谢谢!请查看@Guillaume+1了解您的问题,它帮助我理解操作系统。*甚至更多。我不明白,因为当我试图取消它时,shell脚本已经在运行请详细说明,无法猜出您的意思。我是说,您应该仅当使用os.system()启动脚本时,bash脚本中的et
CDP
值或我上面提到的任何方法,如果shell脚本正在运行,而您正在运行python程序,并且认为CDP
可以被读取为True,那么这是不可能的。请立即终止python和shell脚本,并按照我的建议进行更改,然后查找预期结果。
os.system('/bin/bash script.sh')