जवाबों:
$?
सबसे हाल ही में निष्पादित अग्रभूमि पाइपलाइन की निकास स्थिति के लिए फैलता है। बैश मैनुअल के विशेष पैरामीटर अनुभाग देखें ।
सरल शब्दों में, यह अंतिम कमांड की निकास स्थिति है।
Cjm का उत्तर सही है, लेकिन $?
इसे शेल स्क्रिप्ट में मूर्खतापूर्ण तरीकों से इस्तेमाल किया जा सकता है, और मैं इसके खिलाफ चेतावनी देना चाहूंगा। बहुत सी खराब शेल स्क्रिप्ट में कोड का एक दोहराया पैटर्न होता है:
run_some_command
EXIT_STATUS=$?
if [ "$EXIT_STATUS" -eq "0" ]
then
# Do work when command exists on success
else
# Do work for when command has a failure exit
fi
यदि संभव हो तो (पठनीयता संबंधी चिंताओं को कभी-कभी गलत समझा जाता है) आपको इस स्थिति को अलग तरह से कोड करना चाहिए:
if run_some_command
then
# Do work when command exists on success
else
# Do failure exit work
fi
यह बाद का उपयोग तेजी से होता है, शेल के वैरिएबल नेमस्पेस को दूषित नहीं करता है कि किस मात्रा में अस्थायी चर के साथ, अक्सर मनुष्यों के लिए बहुत अधिक पठनीय हो सकता है और "सकारात्मक तर्क" के उपयोग को प्रोत्साहित करता है, बिना किसी शर्त के सशर्त लिखने का अभ्यास, जिसमें संज्ञानात्मक है अधिकांश स्थितियों में सादगी। यह $?
सबसे अधिक भाग के लिए उपयोग करता है ।
Cjm ने जो कहा उसके अलावा , यदि मान $?
0 है, तो पिछली प्रक्रिया ने सामान्य रूप से (या सफलतापूर्वक) समाप्त कर दिया। अन्यथा कुछ त्रुटि थी।
diff
0 के साथ बाहर निकलता है यदि तुलना की गई फाइलें समान हैं, तो 1 के साथ यदि वे अलग हैं, और 2 एक त्रुटि है।
$?
निष्पादित अंतिम आदेश की निकास स्थिति।
$0
-वर्तमान पटकथा का नाम।
$#
-एक स्क्रिप्ट को दिए गए तर्कों की संख्या।
$$
-वर्तमान शेल की प्रक्रिया संख्या। शेल स्क्रिप्ट के लिए, यह प्रक्रिया आईडी है जिसके तहत वे निष्पादित कर रहे हैं।
$? हमें शीघ्र पर अंतिम निष्पादन आदेश की निष्पादन स्थिति प्रदान करें। मान '0' बताता है कि कमांड को सफल बनाया गया था और '1' सफलता के लिए नहीं है।
$?
निष्पादित कमांड की निकास स्थिति निर्धारित करता है। $
संख्या के बाद (जैसे $1
, $2
आदि) शेल स्क्रिप्ट में मापदंडों का प्रतिनिधित्व करता है।