评估“ $(cat config_file | ./print_to_env_variables.py)”在函数内无法正常运行

时间:2019-07-11 07:36:33

标签: python bash

我有一个使用config.ini文件的简单bash脚本,如下所示:

[a]
b=1
c=2
...

在bash脚本中,有时我会在eval "$(cat config_file | ./print_to_env_variables.py)"中使用python脚本:

config = ConfigParser()
config.readfp(sys.stdin)
for sction in config.sections():
    print('declare -A {}'.format(sction))
    for k, v in config.items(sction):
        print("{}[{}]={}'.format(sction, k ,v))

现在,此脚本的作用是将所有部分添加到env变量中,使我可以像这样echo "${a[b]}"

这只能在我这样做的情况下起作用:

  1. 评估...
  2. 检查变量

但是如果我:

  1. 调用执行eval的函数(重复代码较少)
  2. 检查...

该变量不存在。

那是为什么?

1 个答案:

答案 0 :(得分:2)

Shell函数中的

declare声明了该函数外部不存在的局部变量。要声明全局变量,必须添加-g开关。 参见help declareman bash