Você está usando 'split' em for i in 'command'
.
Mas isso também vem associado a "Geração de Nome de Arquivo" (também conhecido como Expansão de Pathname no bash) no qual caracteres (sem aspas) como *
, ?
e [
são expandidos para "nomes de arquivos".
Isso pode ser desativado por: set -f
.
set -f ; for i in 'pwgen -yB -N 8 1'; do echo "$i"; done
Para usar uma matriz, pode ser uma boa ideia:
$ set -f; arr=( $(pwgen -yB -N 4 1) ); printf '<%s>\n' "${arr[@]}"
<~>
<&>
<_>
<'>
Ou talvez:
$ set -f; arr=( $(pwgen -yB -N 5 18) ); printf '%s\n' "${arr[@]}"
oesheisu%ugh>aetas
nae>chootho|yeiwah
quie{thohp+aechuit
ib\iibugeighe<pie?
kie}phah=ngeitaeph
Claro, você poderia usar readarray para preencher a matriz (não é necessário usar set -f
):
$ readarray -t arr < <(pwgen -yB -N 8 1)
E, em seguida, imprima todos os elementos:
$ printf '%s\n' "${arr[@]}"
Tudo em uma linha:
$ readarray -t arr < <(pwgen -yB -N 4 12); printf '%s\n' "${arr[@]}"
ioquavoej&ee
che>u}phoej<
iuchoo"shoom
hahd!eumohsu