gpt4 book ai didi

python - 将变量从 Python 传递到 Bash

转载 作者:太空狗 更新时间:2023-10-30 02:55:05 24 4
gpt4 key购买 nike

我正在编写一个 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 中传递赋值字符串,然后在 bash 中对其进行 eval

一个例子是

#!/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

最佳答案

  1. 除非使用 Python 对原始数据进行某种操作,否则无需导入任何内容。答案可能像这样蹩脚:

     myvar=$(python - <<< "print 'second'") ; echo "$myvar"
  2. 假设出于某种原因需要 Python 吐出一堆 bash 变量和赋值,或者(谨慎地)即时编写代码。 eval 方法:

     myvar=first
    eval "$(python - <<< "print('myvar=second')" )"
    echo "$myvar"

关于python - 将变量从 Python 传递到 Bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43572953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com