将变量从Python传递到Bash
问题内容:
我正在写一个bash脚本,其中嵌入了一个小的python脚本。我想将变量从python传递到bash。经过几次搜索,我只发现了基于的方法os.environ
。
我只是无法使其工作。这是我的简单测试。
#!/bin/bash
export myvar='first'
python - <<EOF
import os
os.environ["myvar"] = "second"
EOF
echo $myvar
我希望它可以输出second
,但是仍然可以输出first
。我的脚本有什么问题?还有没有办法传递变量export
吗?
概要
感谢所有答案。这是我的总结。
bash中嵌入的python脚本将作为子进程运行,根据定义,该子进程不会影响父bash环境。
解决方案是将分配字符串从python中传递出去,然后将eval
其传递到bash中。
一个例子是
#!/bin/bash
a=0
b=0
assignment_string=$(python -<<EOF
var1=1
var2=2
print('a={};b={}'.format(var1,var2))
EOF
)
eval $assignment_string
echo $a
echo $b
问题答案:
-
除非使用 Python 对原始数据进行某种操作,否则无需导入任何内容。答案可能很la脚:
myvar=$(python - <<< "print 'second'") ; echo $myvar
-
假设出于某种原因,需要 Python 吐出一堆
bash
变量和赋值,或者(谨慎地)即时编写代码。一种eval
方法:myvar=first
eval $(python - <<< “print(‘myvar=second’)” )
echo $myvar