कहते हैं कि आप एक शेल स्क्रिप्ट लिख रहे हैं। यह कमांड लाइन तर्कों की एक मनमानी संख्या लेता है और उन्हें कमांड लाइन उपयोगिता में पास करता है। उस उपयोगिता को कॉल करते समय, प्रत्येक तर्क को एक ध्वज के साथ उपसर्ग करने की आवश्यकता होती है। आपकी लिपि में इससे बचने का सही तरीका क्या है, ताकि उपयोगिता ठीक उसी तार को देख सके जो शेल स्क्रिप्ट करती है?
ठोस उदाहरण: नियमित अभिव्यक्ति पास करना grep। आप अपना रैपर स्क्रिप्ट चलाएं:
./findit.sh needle "old socks" "spare change"
और आप grepउन तर्कों के साथ मैच भाव के रूप में बुलाए जाने की उम्मीद करते हैं:
grep haystack.txt -e needle -e "old socks" -e "spare change"
यह -eउपसर्ग है जो चीजों को जटिल करता है; यदि यह आवश्यक नहीं था, तो आप उपयोग कर सकते हैं "$@"। आपकी स्क्रिप्ट को यह सुनिश्चित करने के लिए क्या करने की आवश्यकता है कि grepउसके तर्क ठीक से बच गए? क्या ऐसा करने का कोई पोर्टेबल तरीका है?