シェル内の他の配列の長さと同じゼロで配列を初期化するには?

シェル内の他の配列の長さと同じゼロで配列を初期化するには?

たとえば、最初の行の長さに基づいて2行目を動的に実行したいとします。

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

関連情報