Respostas:
Apenas deixe expandir dentro do lado direito de uma declaração de matriz:
list=(../smth*/) # grab the list
echo "${#list[@]}" # print array length
echo "${list[@]}" # print array elements
for file in "${list[@]}"; do echo "$file"; done # loop over the array
Observe que a opção do shell nullglob
precisa ser definida.
Não está definido por padrão.
Evita um erro caso o glob (ou um dos vários globs) não corresponda a nenhum nome.
Defina bash
com
shopt -s nullglob
ou zsh
com
setopt nullglob
unsetopt
e o mesmo parâmetro usado para setopt
.
Não há necessidade de complicar demais as coisas:
echo your/stuff*
TEST=$(echo your/stuff*) && eval \"$TEST\"
irá produzir:your/stuff*: No such file or directory
TEST
variável como uma sequência, incluindo *
e não sendo expandida.
*
.