В зависимости от того, что именно вы пытаетесь выполнить, вы можете сделать это за один цикл без каких-либо внешних команд.
Использование арифметической петли for
:
typeset -a ar
ar=("one" "two" "three" "four")
typeset -a ar_new=()
p=""
for (( i=0; i < ${#ar[@]}; ++i )); do
p="$p${p:+ }${ar[$i]}"
ar_new[$i]="$p"
done
Использование строкового цикла for
loop (может не работать для больших массивов?, Может быть медленнее для больших массивов):
typeset -a ar
ar=("one" "two" "three" "four")
typeset -a ar_new=()
p=""
for s in "${ar[@]}"; do
p="$p${p:+ }$s"
ar_new=("${ar_new[@]}" "$p")
done