उद्धरण के अंदर वाइल्डकार्ड


32

यह एक आसान होगा, लेकिन मेरी यादों में, जब शेल स्क्रिप्टिंग, दोहरे उद्धरण चिह्नों का उपयोग करके ग्लोबिंग और चर का विस्तार करने की अनुमति होगी।

लेकिन निम्नलिखित कोड में:

#!/bin/sh

echo *.sh
echo "*.sh"
echo '*.sh'

echo $LANG
echo "$LANG"
echo '$LANG'

मुझे यह परिणाम मिले:

bob.sh redeployJboss.sh
*.sh
*.sh
en_US.utf8
en_US.utf8
$LANG

तो एकल कोट्स ग्लोब एंड वैरिएबल एक्सपेंशन को रोकते हैं लेकिन डबल क्वैचिंग केवल वैरिएबल एक्सपेंशन और नो ग्लोबिंग की अनुमति देता है?

क्या मैं किसी भी उद्धरण पैटर्न में ग्लोब कर सकता हूं?

जवाबों:


26

आप सही हैं: ग्लोबिंग या तो सिंगल- या डबल-कोट्स में काम नहीं करता है। हालाँकि, आप ग्लोबिंग को डबल-कोटेड स्ट्रिंग्स के साथ प्रक्षेपित कर सकते हैं:

$ गूंज "नमस्ते दुनिया" * .श "अलविदा दुनिया"
हैलो वर्ल्ड [फाइलों की सूची] अलविदा दुनिया

6
या यहां तक ​​कि echo "$hello and $goodbye".*("शब्द" में चर विस्तार, रिक्त स्थान और एक ग्लोब को
मिलाएं

1
ग्लोबिंग इस मामले में काम करने के लिए नहीं लगता है, echo /path/to/file/*${variable}। एक प्रक्षेपित ईमेल को जोड़ते समय मैं कैसे ग्लोब करूं?
CMCDragonkai

2
@CMCDragonkai echo "$FOLDER_PATH"/*.extensionमेरे लिए ठीक काम करता है, स्वीकृत उत्तर के विपरीत, मुझे "और के बीच व्हाट्सएप को हटाना था *। आशा करता हूँ की ये काम करेगा।
लॉस्ट बैलून

@CMCDragonkai, @LostBalloon मैं निम्नलिखित पैटर्न का उपयोग करता हूं, जब मैं उन चरों के साथ ग्लब्स का उपयोग करना चाहता हूं जिनमें रिक्त स्थान हो सकते हैं:(cd "$FOLDER_PATH" && echo *.extension)
स्टीवन डारनेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.