প্রতিটি কমান্ডের পরে, প্রস্থান কোডটি $?ভেরিয়েবলে পাওয়া যায় যাতে আপনার মতো কিছু থাকে:
ls -al file.ext
rc=$?; if [[ $rc != 0 ]]; then exit $rc; fi
পাইপযুক্ত কমান্ডগুলি $?সম্পর্কে আপনাকে সতর্কতা অবলম্বন করা উচিত যেহেতু কেবলমাত্র পাইপে শেষ উপাদানটির রিটার্ন কোড দেয় তাই কোডটিতে:
ls -al file.ext | sed 's/^/xx: /"
ফাইলটি উপস্থিত না থাকলে একটি ত্রুটি কোডটি ফেরত দেবে না (যেহেতু sedপাইপলাইনের অংশটি আসলে কাজ করে, 0 ফিরে)।
bashশেল আসলে একটি অ্যারের যা সেই ক্ষেত্রে সাহায্য করতে পারেন প্রদান করে যে হচ্ছে PIPESTATUS। এই অ্যারেতে প্রতিটি পাইপলাইন উপাদানগুলির জন্য একটি উপাদান রয়েছে যা আপনি স্বতন্ত্রভাবে এগুলি অ্যাক্সেস করতে পারেন ${PIPESTATUS[0]}:
pax> false | true ; echo ${PIPESTATUS[0]}
1
নোট করুন যে এটি আপনাকে falseপুরো পাইপলাইনের নয়, কমান্ডের ফলাফল দিচ্ছে । আপনি যথাযথ দেখতে দেখতে পুরো তালিকাটি প্রক্রিয়া করতেও পাবেন:
pax> false | true | false; echo ${PIPESTATUS[*]}
1 0 1
আপনি যদি পাইপলাইন থেকে বৃহত্তম ত্রুটি কোডটি পেতে চান তবে আপনি এমন কিছু ব্যবহার করতে পারেন:
true | true | false | true | false
rcs=${PIPESTATUS[*]}; rc=0; for i in ${rcs}; do rc=$(($i > $rc ? $i : $rc)); done
echo $rc
এটি প্রতিটি PIPESTATUSউপাদানের মধ্য দিয়ে যায় , rcযদি এটি পূর্বের rcমানের চেয়ে বেশি হয় তবে এটি সঞ্চয় করে ।