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 nullglobayarlanması 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 bashile
shopt -s nullglob
veya zshile
setopt nullglob
unsetoptve 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
TESTdeğişkeni, *genişleyen ve genişlemeyen bir dize olarak değerlendirir .
*.