/ / मैं इस सी शेल स्क्रिप्ट में "नो मैच" त्रुटि से कैसे बच सकता हूं - csh

मैं इस सी शेल स्क्रिप्ट में "कोई मिलान" त्रुटि से कैसे बच सकता हूं? - सीएसएच

निम्नलिखित सी शेल स्क्रिप्ट पर विचार करें:

set MYVAR = "a="str.*" -p -10"
set output = `echo "$MYVAR" | sed "s/-p -[0-9]+/-p -100/g"`
echo "$output"

जब शेल से सॉर्ट किया जाता है, तो मुझे त्रुटि मिलती है echo: no match। त्रुटि से बचने के लिए मैं स्क्रिप्ट में क्या बदलाव कर सकता हूं? मैंने ": q" जोड़ने की कोशिश की और एक पर्ल एक लाइनर का उपयोग किया, लेकिन हेवन "एक सुरुचिपूर्ण समाधान नहीं मिला।

उत्तर:

जवाब के लिए 0 № 1

यह मुश्किल है क्योंकि आपके पास दोनों हैं ”।* {(जो फ़ाइलों के लिए ग्लोब होगा) और MYVAR में एक भी उद्धरण {जिसका अर्थ है कि आप "टी" का उपयोग "कहने के लिए" कह सकते हैं मैं यहां सबसे अच्छा सोच सकता हूं कि डबल कोट को MYVAR में एकल उद्धरणों के साथ बदलना है, जिसमें सब कुछ काम करना चाहिए। आपकी sed लाइन "t काम नहीं करती है। लेकिन यह समस्या नहीं है। मैंने sed को बदलकर नकल करने के लिए जो मुझे लगता है कि आप करने की कोशिश कर रहे हैं।

इसलिए:

- set MYVAR = "a="str.*" -p -10"
- echo $MYVAR
echo: No match. #as expected because you need to put it in double quotes
- echo "$MYVAR"
a="str.*" -p -10
- set output = `echo "$MYVAR" | sed "s/-p -10/-p -100/g"`
- echo $output
echo: No match. #Reason same as before
- echo "$output"
a="str.*" -p -100