从python脚本导入shell变量

时间:2017-07-11 20:57:24

标签: python linux bash shell scons

我在shell脚本中有一组常量,这些常量仅供其他项目通过源代码提供,即:

. /home/test/constants.sh`

source /home/test/constants.sh`

我现在需要使scons脚本可以访问这些值。我认为最简单的写作方式 - 一次性使用 - 到处都是:

  1. 将shell脚本转换为python脚本,以便scons可以直接导入它。
  2. 让python脚本生成带有相应变量的shell脚本,或者让shell脚本执行/源代码python脚本以导入必要的变量。
  3. shell脚本从python脚本“导入”变量(即键/值对)的最佳方法是什么? python脚本是否应该只有一个将键/值对转储为字符串的函数,或者是否有更复杂的方法来保持shell脚本和python脚本充满常量的同步?

    此外,将来,简单的GNU Makefile项目也可能需要这些变量。 shell脚本和Makefile是否可以从外部脚本/程序“导入”变量?

1 个答案:

答案 0 :(得分:1)

  

问题:... shell脚本和Makefile"导入"来自外部脚本/程序的变量?

使用最小的常见可能性,配置文件key=value对 这可以从 Python脚本Shell Script中使用。

  

注意:使用自己的命名空间MY_PROJECT_不要覆盖使用过的环境变量。

constants

MY_PROJECT_ROOT=/home/test/

用法Shell Script

. /home/test/constants
echo $MY_PROJECT_ROOT
>>>/home/test/

用法Python Script

启动脚本:

#!/bin/bash
. /home/test/constants
python my_python_script.py

my_python_script.py

print (os.environ['MY_PROJECT_ROOT'])
>>>/home/test/

您可以编辑python脚本并向其添加. /home/test/constants,以便始终为所有Python脚本设置环境变量。

其次,您可以将. /home/test/constants添加到bash.rc 其他需要导入,但如果. /home/test/constants发生更改,则需要重启您的Shell。