回答:
配列宣言の右側に展開するだけです:
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
シェルオプションnullglob
を設定する必要があることに注意してください。
デフォルトでは設定されていません。
グロブ(または複数のグロブの1つ)がどの名前とも一致しない場合のエラーを防ぎます。
それを設定するbash
と
shopt -s nullglob
または中zsh
で
setopt nullglob
unsetopt
およびに使用したのと同じパラメーターsetopt
。
物事を過度に複雑にする必要はありません。
echo your/stuff*
TEST=$(echo your/stuff*) && eval \"$TEST\"
意志出力:your/stuff*: No such file or directory
TEST
文字列として変数を評価しています*
。
*
。