Ответы:
Просто дайте ему развернуться внутри правой части декларации массива:
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переменную как строку, в том числе *и без расширения.
*.