এটি লক্ষ করা উচিত যে if...then...fi
এবং &&
/ ||
প্রকারের পদ্ধতির সাথে প্রস্থান স্থিতির সাথে সম্পর্কিত আদেশটি আমরা আদেশ দিয়ে ফিরে এসেছি (সাফল্যে 0); তবে, কমান্ড ব্যর্থ হলে বা ইনপুট নিয়ে কাজ করতে না পারলে কিছু কমান্ড একটি শূন্য-বহির্গমন স্থিতি ফিরিয়ে দেয় না। এর অর্থ হ'ল স্বাভাবিক if
এবং &&
/ ||
পদ্ধতিগুলি সেই নির্দিষ্ট কমান্ডগুলির জন্য কাজ করে না।
উদাহরণস্বরূপ, লিনাক্সে জিএনইউ file
0 দিয়ে এখনও প্রস্থান করে যদি এটি কোনও অস্তিত্বযুক্ত ফাইলকে আর্গুমেন্ট হিসাবে গ্রহণ করে এবং 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
(এটি ইউনিক্স.স্ট্যাকেক্সেক্সঞ্জ ডটকম-এ সম্পর্কিত প্রশ্নে আমার নিজের উত্তরটির পুনরায় পোস্ট )