在 ZSH 中声明数组

Declaring arrays in ZSH

我在将 shell 脚本转换为 zsh 时遇到问题。我定义了以下数组,但它抛出错误 unknown file attribute: \n。 (我正在将 dotfiles 存储库转换为我的 zsh)

declare -r -a FILES_TO_SOURCE=(
    "bash_aliases"
    "bash_exports"
    "bash_functions"
    "bash_options"
    "bash_prompt"
    "bash.local"
)

来自 man zshbuiltins,在 typeset 的条目下(其中 declare 是同义词):

For each name=value assignment, the parameter name is set to value. Note that arrays currently cannot be assigned in typeset expressions, only scalars and integers.

试试这个:

declare -a FILES_TO_SOURCE
FILES_TO_SOURCE=(
    "bash_aliases"
    "bash_exports"
    "bash_functions"
    "bash_options"
    "bash_prompt"
    "bash.local"
)
declare -r FILES_TO_SOURCE

也就是说,文件列表很可能必须在此处更改以实现兼容性(假设您在这些文件中使用了 bash-isms,这似乎很可能)。