जवाब पहले से ही तैनात हैं निश्चित रूप से सही उपयोग कर सकते हैं, लेकिन यह सार्थक हो सकता है कि कभी-कभी पैरामीटर विस्तार नोट करने के लिए शायद के साथ इसी उद्देश्य को पूरा कर सकते हैं कुछ अतिरिक्त लचीलापन।
% p() { printf 'notvar = %b\n' "${notvar##"${string1}"}${string2}" ; }
% string1='some stuff about things\c'
% string2='some different stuff maybe'
% notvar="$string1" p
> 'some different stuff maybe'
% notvar="$string2" p
> 'some stuff about things'
ठीक है, तो ऊपर सुपर उपयोगी है के रूप में नहीं है, लेकिन यह भी विचार है कि आप परीक्षण चर के लिए इसी तरह के तरीकों यहाँ-दस्तावेजों में, इन-लाइन चर असाइनमेंट यदि आवश्यक हो तो (एक हद तक उपयोग कर सकते हैं ...), या यहां तक कि एक छोटा (और तेज़!) के रूप में भी आपका पहला बयान लिखने का मतलब है।
[ ! "${var##"string"}" ] && _MATCH || _NOMATCH
या यहां तक कि ...
[ ${#var#*"${s=string}"} -lt ${#var} ] && _SUB_STRING_TEST=TRUE
संभवतः भी ...
% p() { printf '%s is %s of %s' "$2" "${var_chk-not}" "$1"
> }<<HEREDOC
> ${in="${1##*"${2}"*}"}
> ${in:-
> ${in="${1##"${2}"}"}
> ${in:-${var_chk=all}
> ${var_chk=some}
> }
> HEREDOC
%
आप '[[$ var == "string"]]' का उपयोग कर सकते हैं, जो POSIX है, लेकिन वैकल्पिक (afaik)। या आप '[" $ var "=" string "]' का उपयोग करते हैं। सिंगल-ब्रैकेट संस्करण में चर के चारों ओर '' '' नोट करें: '$ var' खाली होने पर यह आवश्यक है –
महत्वपूर्ण हिस्सा लीटब के रूप में' $ var' के आसपास उद्धरण है। उद्धरण के बिना, '[$ var = "value"] '' बन जाता है [= "मान"]' जो खोल को बहुत भयानक रूप से भ्रमित करता है। आपको शायद एक त्रुटि दिखाई देगी जैसे _ "[: =: यूनरी ऑपरेटर अपेक्षित" _ जब आपको अन्यथा रिक्त चर का सामना करना पड़ता है। –
मैं "$ var" बनाम $ var के बारे में समझता हूं, मेरी समस्या == बनाम = – LiraNuna