Risposte:
Lascialo espandere all'interno del lato destro di una dichiarazione di array:
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
Si noti che è nullglob
necessario impostare l'opzione shell .
Non è impostato di default.
Previene un errore nel caso in cui il glob (o uno di più globs) non corrisponda a nessun nome.
Impostalo bash
con
shopt -s nullglob
o in zsh
con
setopt nullglob
unsetopt
e lo stesso parametro utilizzato per setopt
.
Non c'è bisogno di complicare eccessivamente le cose:
echo your/stuff*
TEST=$(echo your/stuff*) && eval \"$TEST\"
uscirà:your/stuff*: No such file or directory
TEST
variabile come una stringa che include *
e non viene espansa.
*
.