এটি লক্ষ করা উচিত যে if...then...fiএবং &&/ ||প্রকারের পদ্ধতির সাথে প্রস্থান স্থিতির সাথে সম্পর্কিত আদেশটি আমরা আদেশ দিয়ে ফিরে এসেছি (সাফল্যে 0); তবে, কমান্ড ব্যর্থ হলে বা ইনপুট নিয়ে কাজ করতে না পারলে কিছু কমান্ড একটি শূন্য-বহির্গমন স্থিতি ফিরিয়ে দেয় না। এর অর্থ হ'ল স্বাভাবিক ifএবং &&/ ||পদ্ধতিগুলি সেই নির্দিষ্ট কমান্ডগুলির জন্য কাজ করে না।
উদাহরণস্বরূপ, লিনাক্সে জিএনইউ file0 দিয়ে এখনও প্রস্থান করে যদি এটি কোনও অস্তিত্বযুক্ত ফাইলকে আর্গুমেন্ট হিসাবে গ্রহণ করে এবং findনির্দিষ্ট করা ফাইল ব্যবহারকারী সনাক্ত করতে না পারে।
$ find . -name "not_existing_file"
$ echo $?
0
$ file ./not_existing_file
./not_existing_file: cannot open `./not_existing_file' (No such file or directory)
$ echo $?
0
এই ক্ষেত্রে, একটি সম্ভাব্য আমরা যেভাবে পরিস্থিতি হ্যান্ডেল পারে পড়া হয় stderr/ stdinবার্তা, যেমন ঐ যে দ্বারা ফিরে fileকমান্ড বা মত কমান্ডের আউটপুট পার্স find। যে উদ্দেশ্যে, caseবিবৃতি ব্যবহার করা যেতে পারে।
$ file ./doesntexist | while IFS= read -r output; do
> case "$output" in
> *"No such file or directory"*) printf "%s\n" "This will show up if failed";;
> *) printf "%s\n" "This will show up if succeeded" ;;
> esac
> done
This will show up if failed
$ find . -name "doesn'texist" | if ! read IFS= out; then echo "File not found"; fi
File not found
(এটি ইউনিক্স.স্ট্যাকেক্সেক্সঞ্জ ডটকম-এ সম্পর্কিত প্রশ্নে আমার নিজের উত্তরটির পুনরায় পোস্ট )