एक सामान्य तरीका है:
die() {
IFS=' ' # make sure "$*" is joined with spaces
# output the arguments if any on stderr:
[ "$#" -eq 0 ] || printf '%s\n' "$*" 1>&2
exit 1
}
तो आप इसे इस तरह उपयोग करते हैं:
mkdir -p some/path || die "mkdir failed with status $?"
या यदि आप बाहर निकलने की स्थिति को शामिल करना चाहते हैं, तो आप इसे बदल सकते हैं:
die() {
last_exit_status=$?
IFS=' '
printf '%s\n' "FATAL ERROR: $* (status $last_exit_status)" 1>&2
exit 1
}
और फिर इसका उपयोग करना थोड़ा आसान है:
mkdir -p some/path || die "mkdir failed"
जब यह विफल हो जाता है, mkdir
तो संभवतः पहले से ही एक त्रुटि संदेश जारी किया जाएगा, ताकि दूसरे को बेमानी के रूप में देखा जा सके, और आप बस कर सकते हैं:
mkdir -p some/path || exit # with the same (failing) exit status as mkdir's
mkdir -p some/path || exit 1 # with exit status 1 always
(या die
तर्क के बिना ऊपर के पहले संस्करण का उपयोग करें )
बस अगर आपने पहले नहीं देखा है command1 || command2
, तो यह चलता है command1
, और यदि command1
विफल रहता है, तो यह चलता है command2
।
तो आप इसे पढ़ सकते हैं जैसे "निर्देशिका बनाएं या मरें"।
आपका उदाहरण ऐसा दिखेगा:
mkdir -p some/path || die "mkdir failed"
cd some/path || die "cd failed"
some_command || die "some_command failed"
या आप dies
दाईं ओर आगे संरेखित कर सकते हैं ताकि मुख्य कोड अधिक स्पष्ट हो।
mkdir -p some/path || die "mkdir failed"
cd some/path || die "cd failed"
some_command || die "some_command failed"
या कमांड लाइन लंबी होने पर निम्न लाइन पर:
mkdir -p some/path ||
die "mkdir failed"
cd some/path ||
die "cd failed"
some_command ||
die "some_command failed"
इसके अलावा, यदि आप some/path
कई बार नाम का उपयोग करने जा रहे हैं, तो इसे एक चर में संग्रहीत करें ताकि आपको इसे टाइप करना न पड़े, और यदि आवश्यक हो तो इसे आसानी से बदल सकते हैं। और जब आदेशों के लिए चर तर्कों को पास किया जाता है, तो --
विकल्प सीमांकक का उपयोग करना सुनिश्चित करें ताकि तर्क को एक विकल्प के रूप में नहीं लिया जाए यदि इसके साथ शुरू होता है -
।
dir=some/path
mkdir -p -- "$dir" || die "Cannot make $dir"
cd -P -- "$dir" || die "Cannot cd to $dir"
some_command || die "Cannot run some_command"