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 nullglob
perlu diatur.
Ini tidak diatur secara default.
Ini mencegah kesalahan jika glob (atau salah satu dari banyak gumpalan) tidak cocok dengan nama apa pun.
Atur bash
dengan
shopt -s nullglob
atau zsh
dengan
setopt nullglob
unsetopt
dan 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
TEST
variabel sebagai string termasuk *
dan tidak diperluas.
*
.