在 shell 中,如何用等于另一个数组长度的零来初始化数组?

在 shell 中,如何用等于另一个数组长度的零来初始化数组?

例如,我想根据第一行的长度动态执行第二行:

DOMAINS=("gmail.com" "yahoo.com" "yahoo.co.uk" "yahoo.co.jp")
s_domain=(0 0 0 0)

答案1

至少在最近的 bash 版本中,您可以将参数扩展按元素应用于数组:

s_domain=("${DOMAINS[@]/*/0}")

前任。

$ DOMAINS=("gmail.com" "yahoo.com" "yahoo.co.uk" "yahoo.co.jp")
$ s_domain=("${DOMAINS[@]/*/0}")
$ printf '%s\n' "${s_domain[@]}"
0
0
0
0

答案2

使用 for 循环:

for i in "${DOMAINS[@]}"; do s_domain+=(0); done

相关内容