Ena*_*san 26 arrays bash concatenation
我是一个新__CODE__
学习者.我有一个数组__CODE__
从标准输入中获取输入.我必须连接两次.说,我在数组中有以下元素:
Namibia
Nauru
Nepal
Netherlands
NewZealand
Nicaragua
Niger
Nigeria
NorthKorea
Norway
Run Code Online (Sandbox Code Playgroud)
现在,输出应该是:
Namibia Nauru Nepal Netherlands NewZealand Nicaragua Niger Nigeria NorthKorea Norway Namibia Nauru Nepal Netherlands NewZealand Nicaragua Niger Nigeria NorthKorea Norway
Run Code Online (Sandbox Code Playgroud)
我的代码是:
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[@]}"
Run Code Online (Sandbox Code Playgroud)
请注意,我可以像下面的代码一样打印三次,但这不是我的座右铭.我必须在数组中连接它们.
countries=()
while read -r country; do
countries+=( "$country" )
done
echo "${countries[@]} ${countries[@]} ${countries[@]}"
Run Code Online (Sandbox Code Playgroud)
Cha*_*ffy 38
首先,要将列表读入数组,每行一个条目:
readarray -t countries
Run Code Online (Sandbox Code Playgroud)
...或者,对于旧版本的bash:
# same, but compatible with bash 3.x; || is to avoid non-zero exit status.
IFS=$'\n' read -r -d '' countries || (( ${#countries[@]} ))
Run Code Online (Sandbox Code Playgroud)
其次,要复制条目,要么将数组展开为自身三次:
countries=( "${countries[@]}" "${countries[@]}" "${countries[@]}" )
Run Code Online (Sandbox Code Playgroud)
...或使用现代语法执行追加:
countries+=( "${countries[@]}" "${countries[@]}" )
Run Code Online (Sandbox Code Playgroud)
小智 5
简单地写这个:
countries=$(cat)
countries+=( "${countries[@]}" "${countries[@]}" )
echo ${countries[@]}
Run Code Online (Sandbox Code Playgroud)
第一行是输入数组,第二行是连接数组,最后一行是打印数组。