我在查看 Gentoo 的 ebuilds 是如何制作的,我发现了以下代码:
_VIM_PLUGIN_ALLOWED_DIRS=(
after autoload colors compiler doc ftdetect ftplugin indent keymap
macros plugin spell syntax
)
local d
for d in "${_VIM_PLUGIN_ALLOWED_DIRS[@]}" "${@}"; do
[[ -d "${d}" ]] || continue
doins -r "${d}"
done
据我所知,_VIM_PLUGIN_ALLOWED_DIRS
是一个列表。d
是局部变量。
我不明白的是[@]
in _VIM_PLUGIN_ALLOWED_DIRS[@]
。通常我会省略[@]
, 并只d
迭代_VIM_PLUGIN_ALLOWED_DIRS
的值。
它在做什么?它的目的是什么?
我从未见过[@]
,我也不知道${@}
之后会做什么
PS:doins
是在别处定义的外部函数
提前致谢
在 Bash 也有的 ksh 样式数组中,引用没有索引的数组只会给出 index 处的元素
0
。这与 zsh 不同,在 zsh 中引用带有索引的数组会给出所有(非空)元素。特殊索引
@
用于将数组的所有元素作为不同的字段获取。$@
类似地扩展到所有位置参数(脚本或函数的参数)。例如
请注意,在这两种情况下,您都应该引用
"${arr[@]}"
并"$@"
避免单词拆分和通配,以免弄乱值。看: