迭代地图并导出变量

时间:2018-01-26 01:05:14

标签: linux bash shell centos sh

此脚本打印出正确的值,但看起来我的导出语句不正确:

declare -A ENVMAP=( [foo]=bar [baz]=quux [corge]=grault )
for i in "${!ENVMAP[@]}"
do
  echo "key  : $i"
  echo "value: ${ENVMAP[$i]}"
  export "$i"="${ENVMAP[$i]}"
done

值正确打印,因此地图可以正常工作,但不会导出变量。我的出口声明有什么问题?

2 个答案:

答案 0 :(得分:1)

你是如何运行脚本的?导出的变量对于脚本的子进程是可见的,但对父进程(即bash控制台)不可见。

答案 1 :(得分:1)

如果您想在用户的系统中永久保存这些变量,您可以将它们添加到当前用户的DOT / BASH配置文件中,几个步骤如下:

- 通过正常cd转到当前用户的目录。

II - 然后通过执行ls -lals -lhtr列出包含隐藏文件的所有文件。

III - 现在,您可以在BASH配置文件中添加这些导出命令(如果您使用的是Linux / bash),也可以创建自己的.profile也是(一次只能拿一个)。

IV - 保存后,请使用source .profilesource .bash_profile. ./.profile. /.bash_profile。< / p>

请尝试这些并告诉我这些是否对您有帮助。