typeset -A 在脚本中给出错误

typeset -A 在脚本中给出错误

我在脚本中使用关联数组,因此我曾经通过

typeset -A <array_name>命令,并且在 bash 提示符下运行良好

但是当我在脚本中使用它时,出现以下错误 typeset: -A: invalid option typeset: usage: typeset [-afFirtx] [-p] name[=value] ...

我也可以接受替代解决方案。

旁注:我尝试了 typeset -a 但它声明了一个索引数组。但我想要一个关联数组。

答案1

这是 Bash 3 for 生成的错误typeset -A关联数组在 Bash 4 中添加了,并且不在Bash 3.2 及更早版本。

您的脚本运行时的 Bash 版本似乎与您用作 shell 的版本不同。如果在这两种情况下您都在同一台计算机上,则您安装了多个版本,并且可能可以选择具有不同路径的版本。如果您在另一台机器上运行该脚本,您也许能够安装更新的版本,但否则您就无法获得 Bash 的直接支持。

zsh从更旧的版本开始就支持关联数组,因此如果您有可用的功能,您可能可以移植您的脚本而无需太多工作。如果您无法做到这一点,您可以使用常规数组 和 来伪造它grep,或者使用${!prefix@}以及一组普通变量,在旧版 Bash 中可用。${!prefix@}扩展为名称以 开头的所有变量的名称prefix,您可以将其与多个变量结合使用prefix_key1prefix_another以获得关联数组的大部分行为。

相关内容