Odpowiedzi:
Po prostu pozwól mu rozwinąć się po prawej stronie deklaracji tablicowej:
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
Pamiętaj, że nullglob
należy ustawić opcję powłoki .
To nie jest ustawione domyślnie.
Zapobiega to błędom w przypadku, gdy glob (lub jeden z wielu globów) nie pasuje do żadnej nazwy.
Ustaw za bash
pomocą
shopt -s nullglob
lub zsh
z
setopt nullglob
unsetopt
i ten sam parametr, co używany dla setopt
.
Nie trzeba nadmiernie komplikować rzeczy:
echo your/stuff*
TEST=$(echo your/stuff*) && eval \"$TEST\"
wyświetli:your/stuff*: No such file or directory
TEST
zmienną jako ciąg zawierający *
i nie rozwijany.
*
.