linux - bash:设置数组 env 变量并从任何 shell 脚本取消引用它失败

标签 linux bash environment-variables

我以这种方式将数组设置为环境变量 例如。脚本test.sh

在测试.sh

#!/bin/bash
export STRING=( "str1" "str2" )

源码测试.sh

现在在脚本 test-1.sh

#!/bin/bash
echo ${STRING[0]}

响应什么都没有,只是一个空行, 然而,如果我尝试在 test.sh 中设置 STRING="str1" 并在 test-1.sh 中执行 echo $STRING,这有效。

测试仅从 root 用户执行, 现在如何将数组设置为环境变量,以便我可以根据需要调用数组的元素?早些时候,我什至尝试修改 /etc/bashrc,但也没有产生任何积极的结果。

我需要将数组设置为 env 变量,因为可能有许多我必须编写的脚本将使用这些变量设置。

任何人都可以提供建议来纠正我做错的地方吗?

最佳答案

阅读精美手册的“错误”部分。

Array variables may not (yet) be exported.

不过,我不知道有多少人认为这是一个真正的错误。其他支持 ksh 样式数组的 shell 也不允许导出它们。

您可以通过参数或变量或环境轻松地传递数组定义。虽然它通常不是很有用。

function f {
    unset -v "$2"
    typeset "$2"
    eval "${!1}"
    typeset -p "$2"
}

typeset -a a=(a b c)
myArr=$(typeset -p a) f myArr a

关于linux - bash:设置数组 env 变量并从任何 shell 脚本取消引用它失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14100409/

相关文章:

linux - 什么系统调用用于在 Linux 中复制文件

windows - msys2:尽管 (MSYS2_PATH_TYPE = inherit) 仍未找到 Windows 程序

python - 如何使用当前 conda 环境的 python 路径作为脚本的 shebang?

c - 为什么 printf 会导致段错误?

c - 不使用/bin/bash保存环境变量

linux - 在 Linux 中使用 chdir() 实现 cd 命令

c - 如何使用 C 代码将 linux 命令的结果复制到字符串中?

linux - 如何等到 shell 脚本启动的所有内容结束?

linux - 脚本无法获取 "Not Valid Identifier"

linux - 重启后命令提示符更改