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