在ZSH中声明数组

ale*_*ips 7 shell command-line zsh

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

declare -r -a FILES_TO_SOURCE=(
    "bash_aliases"
    "bash_exports"
    "bash_functions"
    "bash_options"
    "bash_prompt"
    "bash.local"
)
Run Code Online (Sandbox Code Playgroud)

Eta*_*ner 7

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

对于每个name = value赋值,参数名称设置为value.请注意,当前不能在排版表达式中分配数组,只能分配 标量和整数.

试试这个:

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
Run Code Online (Sandbox Code Playgroud)

也就是说,文件列表必须在这里更改,最有可能是兼容性(假设您在这些文件中使用了bash-isms似乎很可能).