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 nullglobmuss.
Es ist nicht standardmäßig eingestellt.
Es verhindert einen Fehler, falls der Glob (oder einer von mehreren Globs) keinem Namen entspricht.
Stellen Sie es bashmit ein
shopt -s nullglob
oder in zshmit
setopt nullglob
unsetoptund 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
TESTVariable als Zeichenfolge ausgewertet , einschließlich *und nicht erweitert.
*.