【问题标题】:iterate over a map and export vars遍历地图并导出变量
【发布时间】:2018-07-05 09:11:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: linux bash shell centos sh


    【解决方案1】:

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

    - 正常cd 进入当前用户目录。

    II- 然后通过ls -lals -lhtr 列出所有文件,包括隐藏文件。

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

    IV- 保存后使用source .profilesource .bash_profile. ./.profile. /.bash_profile

    请尝试这些,如果这些对您有帮助,请告诉我。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 如何将它们导出到父级
      • 使用source scriptname.sh. scriptname.sh 而不是像./scriptname.sh 那样直接运行脚本。
      • @mike-holt 添加您的评论作为答案,我认为应该是被接受的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      相关资源
      最近更新 更多