Aqui está uma maneira que utiliza a expansão do parâmetro bash e sua variável especial IFS
.
$ System=('s1' 's2' 's3' 's4 4 4')
$ ( IFS=$'\n'; echo "${System[*]}" )
Usamos um subshell para evitar sobrescrever o valor de IFS
no ambiente atual. Nesse subshell, modificamos o valor de IFS
para que o primeiro caractere seja uma nova linha (usando $'...'
quoting). Finalmente, usamos a expansão de parâmetros para imprimir o conteúdo da matriz como uma única palavra; cada elemento é separado pelo primeiro caractere de IFS
.
Para capturar uma variável:
$ var=$( IFS=$'\n'; echo "${System[*]}" )
Se o seu bash é novo o suficiente (4.2 ou posterior), você pode (e deve) ainda usar printf
com a opção -v
:
$ printf -v var "%s\n" "${System[@]}"
Em ambos os casos, você pode não querer a nova linha final em var
. Para removê-lo:
$ var=${var%?} # Remove the final character of var