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