Respuestas:
Simplemente deje que se expanda dentro del lado derecho de una declaración 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
Tenga en cuenta que la opción de shell nullglob
debe establecerse.
No está configurado por defecto.
Evita un error en caso de que el globo (o uno de varios globos) no coincida con ningún nombre.
Configúralo bash
con
shopt -s nullglob
o zsh
con
setopt nullglob
unsetopt
y el mismo parámetro utilizado para setopt
.
No es necesario complicar demasiado las cosas:
echo your/stuff*
TEST=$(echo your/stuff*) && eval \"$TEST\"
saldrá:your/stuff*: No such file or directory
TEST
variable como una cadena que incluye *
y no se expande.
*
.