Jawaban:
Biarkan saja diperluas di sisi kanan deklarasi array:
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
Perhatikan bahwa opsi shell nullglobperlu diatur.
Ini tidak diatur secara default.
Ini mencegah kesalahan jika glob (atau salah satu dari banyak gumpalan) tidak cocok dengan nama apa pun.
Atur bashdengan
shopt -s nullglob
atau zshdengan
setopt nullglob
unsetoptdan parameter yang sama seperti yang digunakan untuk setopt.
Tidak perlu terlalu rumit:
echo your/stuff*
TEST=$(echo your/stuff*) && eval \"$TEST\"akan menampilkan:your/stuff*: No such file or directory
TESTvariabel sebagai string termasuk *dan tidak diperluas.
*.