जवाबों:
बस इसे एक सरणी घोषणा के दाईं ओर के अंदर विस्तारित होने दें:
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
सेट करने की आवश्यकता है।
यह डिफ़ॉल्ट रूप से सेट नहीं है।
यह ग्लोब (या एक से अधिक ग्लब्स में से एक) किसी भी नाम से मेल नहीं खाने की स्थिति में एक त्रुटि को रोकता है।
इसके 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
चर का एक स्ट्रिंग के रूप में मूल्यांकन कर *
रहा है जिसमें शामिल है और इसका विस्तार नहीं किया जा रहा है।
*
।