Yanıtlar:
Dizi bildiriminin sağ tarafında genişlemesine izin verin:
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
Kabuk seçeneğinin nullglob
ayarlanması gerektiğini unutmayın .
Varsayılan olarak ayarlanmamış.
Glob'un (veya birden fazla globdan birinin) herhangi bir adla eşleşmemesi durumunda bir hatayı önler.
Bunu Set bash
ile
shopt -s nullglob
veya zsh
ile
setopt nullglob
unsetopt
ve için kullanılan aynı parametre setopt
.
İşleri fazla karmaşıklaştırmaya gerek yok:
echo your/stuff*
TEST=$(echo your/stuff*) && eval \"$TEST\"
çıkacak:your/stuff*: No such file or directory
TEST
değişkeni, *
genişleyen ve genişlemeyen bir dize olarak değerlendirir .
*
.