Вам не нужно делать ничего особенного, просто не цитируйте *.
Кевин
1
Хотя, если вы собираетесь пытаться разобрать его, используйте массив, как сказано в ответе.
Кевин
Ответы:
40
Просто дайте ему развернуться внутри правой части декларации массива:
list=(../smth*/)# grab the list
echo "${#list[@]}"# print array length
echo "${list[@]}"# print array elementsfor file in"${list[@]}";do echo "$file";done# loop over the array
Обратите внимание, что параметр оболочки nullglobдолжен быть установлен. Это не установлено по умолчанию.
Это предотвращает ошибку в случае, если глоб (или один из нескольких глобусов) не совпадает ни с одним именем.
*
.Ответы:
Просто дайте ему развернуться внутри правой части декларации массива:
Обратите внимание, что параметр оболочки
nullglob
должен быть установлен.Это не установлено по умолчанию.
Это предотвращает ошибку в случае, если глоб (или один из нескольких глобусов) не совпадает ни с одним именем.
Установите
bash
с помощьюили в
zsh
систочник
unsetopt
и тот же параметр, что и дляsetopt
.Не нужно усложнять вещи:
источник
TEST=$(echo your/stuff*) && eval \"$TEST\"
выдаст:your/stuff*: No such file or directory
TEST
переменную как строку, в том числе*
и без расширения.