आपकी आज्ञा,
check=grep -ci 'text' file.sh
के रूप में खोल से व्याख्या की जाएगी "आदेश चला -ciतर्क के साथ textऔर file.sh, और चर सेट checkमूल्य को grepअपने वातावरण में"।
शेल चर में हाल ही में निष्पादित कमांड के निकास मूल्य को संग्रहीत करता है ?। आप अपने मूल्य को इस तरह से अपने स्वयं के चर में असाइन कर सकते हैं:
grep -i 'PATTERN' file
check=$?
यदि आप इस मूल्य पर कार्य करना चाहते हैं, तो आप अपने checkचर का उपयोग कर सकते हैं :
if [ "$check" -eq 0 ]; then
# do things for success
else
# do other things for failure
fi
या आप एक अलग चर का उपयोग कर छोड़ सकते हैं और $?सभी का एक साथ निरीक्षण कर सकते हैं:
if grep -q -i 'pattern' file; then
# do things (pattern was found)
else
# do other things (pattern was not found)
fi
(ध्यान दें -q, यह grepकुछ भी उत्पादन नहीं करने और कुछ मैचों से जल्द से जल्द बाहर निकलने का निर्देश देता है; हम वास्तव में यहाँ क्या मैचों में रुचि नहीं रखते हैं)
या, यदि आप केवल "चीजें करना चाहते हैं" जब पैटर्न नहीं मिला है:
if ! grep -q -i 'pattern' file; then
# do things (pattern was not found)
fi
$?किसी अन्य चर में बचत करना केवल तभी आवश्यक है जब आपको बाद में इसका उपयोग करने की आवश्यकता होती है, जब मूल्य $?को अधिलेखित कर दिया गया है, जैसे कि
mkdir "$dir"
err=$?
if [ "$err" -ne 0 ] && [ ! -d "$dir" ]; then
printf 'Error creating %s (error code %d)\n' "$dir" "$err" >&2
exit "$err"
fi
उपरोक्त कोड स्निपेट में, परीक्षण $?के परिणाम द्वारा ओवरराइट किया जाएगा [ "$err" -ne 0 ] && [ ! -d "$dir" ]। यहां इसे सहेजना वास्तव में केवल आवश्यक है अगर हमें इसे प्रदर्शित करने और इसके साथ उपयोग करने की आवश्यकता है exit।
$?कमांड समाप्त होने के बाद सही जांच कर सकते हैं ।