देशी खोल उपसर्ग / प्रत्यय हटाने की सुविधा का उपयोग करते हुए एक सरल और अधिक कुशल तरीका है:
temp="${opt%\"}"
temp="${temp#\"}"
echo "$temp"
${opt%\"}प्रत्यय को हटा देगा "(शेल व्याख्या को रोकने के लिए बैकस्लैश के साथ भाग गया)।
${temp#\"}उपसर्ग को हटा देगा "(शेल व्याख्या को रोकने के लिए बैकस्लैश के साथ भाग गया)।
एक और लाभ यह है कि यह आसपास के उद्धरणों को तभी हटाएगा जब आसपास के उद्धरण हों।
BTW, आपका समाधान हमेशा पहले और अंतिम चरित्र को हटा देता है, जो कुछ भी वे हो सकते हैं (निश्चित रूप से, मुझे यकीन है कि आप अपने डेटा को जानते हैं, लेकिन यह हमेशा बेहतर है कि आप जो हटा रहे हैं वह सुनिश्चित हो)।
Sed का उपयोग करना:
echo "$opt" | sed -e 's/^"//' -e 's/"$//'
(बेहतर संस्करण, जैसा कि jfgagne द्वारा इंगित किया गया है, प्रतिध्वनि से छुटकारा)
sed -e 's/^"//' -e 's/"$//' <<<"$opt"
तो यह "कुछ भी नहीं के साथ एक प्रमुख की जगह , और "कुछ भी नहीं के साथ एक अनुगामी । एक ही आह्वान में (किसी अन्य पाइप को शुरू करने और उपयोग करने की कोई आवश्यकता नहीं है। -eआप कई पाठ प्रसंस्करण कर सकते हैं)।
sed "s/^\(\"\)\(.*\)\1\$/\2/g" <<<"$opt"। यह सिंटैक्स केवल qoutes को निकाल देगा जब एक मिलान जोड़ी होगी।