Подтвердить что ты не робот

Как объединить массивы в bash?

Я новый ученик bash. У меня есть массив в bash, который принимает вход со стандартного ввода. Я должен дважды объединиться. Скажем, у меня есть следующие элементы в массиве:

Namibia
Nauru
Nepal
Netherlands
NewZealand
Nicaragua
Niger
Nigeria
NorthKorea
Norway

Теперь выход должен быть:

Namibia Nauru Nepal Netherlands NewZealand Nicaragua Niger Nigeria NorthKorea Norway Namibia Nauru Nepal Netherlands NewZealand Nicaragua Niger Nigeria NorthKorea Norway

Мой код:

countries=()
while read -r country; do
    countries+=( "$country" )
done
countries=countries+countries+countries # this is the wrong way, i want to know the right way to do it
echo "${countries[@]}"

Заметьте, что я могу напечатать его трижды, как в приведенном ниже коде, но это не мой девиз. Я должен конкатенировать их в массиве.

countries=()
while read -r country; do
    countries+=( "$country" )
done
echo "${countries[@]} ${countries[@]} ${countries[@]}"
4b9b3361

Ответ 1

Либо разложите массив на себя три раза:

countries=( "${countries[@]}" "${countries[@]}" "${countries[@]}" )

... или используйте современный синтаксис для выполнения добавления:

countries+=( "${countries[@]}" "${countries[@]}" )

Ответ 2

Просто напишите это:

countries=$(cat)
countries+=( "${countries[@]}" "${countries[@]}" )
echo ${countries[@]}

Первая строка - взять входной массив, второй - для конкатенации и последний для печати массива.