Antworten:
Lassen Sie es einfach in der rechten Seite einer Array-Deklaration expandieren:
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
Beachten Sie, dass die Shell-Option festgelegt werden nullglob
muss.
Es ist nicht standardmäßig eingestellt.
Es verhindert einen Fehler, falls der Glob (oder einer von mehreren Globs) keinem Namen entspricht.
Stellen Sie es bash
mit ein
shopt -s nullglob
oder in zsh
mit
setopt nullglob
unsetopt
und derselbe Parameter wie für setopt
.
Keine Notwendigkeit, Dinge zu komplizieren:
echo your/stuff*
TEST=$(echo your/stuff*) && eval \"$TEST\"
wird ausgeben:your/stuff*: No such file or directory
TEST
Variable als Zeichenfolge ausgewertet , einschließlich *
und nicht erweitert.
*
.