Ответы:
Просто дайте ему развернуться внутри правой части декларации массива:
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
Обратите внимание, что параметр оболочки nullglob
должен быть установлен.
Это не установлено по умолчанию.
Это предотвращает ошибку в случае, если глоб (или один из нескольких глобусов) не совпадает ни с одним именем.
Установите bash
с помощью
shopt -s nullglob
или в zsh
с
setopt nullglob
unsetopt
и тот же параметр, что и для setopt
.
Не нужно усложнять вещи:
echo your/stuff*
TEST=$(echo your/stuff*) && eval \"$TEST\"
выдаст:your/stuff*: No such file or directory
TEST
переменную как строку, в том числе *
и без расширения.
*
.