অনুসরণ করুন অনুপস্থিত কমান্ডের জন্য "whatis" 0 প্রদান করে , আমি পরিবর্তন করার চেষ্টা করছি /usr/bin/whatis
একটি অনুপযুক্ত কমান্ড প্রবেশ করার পরে একটি অ-শূন্য প্রস্থান কোড ফেরত দিতে। এটি করার জন্য আমার পদ্ধতিটি নিম্নোক্ত সেগমেন্টে একটি রিটার্ন পরিবর্তনশীল যোগ করা এবং লুপের শেষে যে পরিবর্তনশীলটি ফেরত দিতে হয়
while [ "$1" != "" ]
do
found=0
for d in /var/cache/man $manpath /usr/lib
do
if [ -f $d/whatis ]
then
if grep -"$grepopt1" "$grepopt2""$1" $d/whatis
then
found=1
fi
fi
done
if [ $found = 0 ]
then
echo "$1: nothing appropriate"
**code=1**
fi
shift
done | eval ${PAGER:-more -E}
**return $code**
তবে, যেহেতু while
লুপ পাইপ করা হয় eval
, তাই এটি একটি subshell চালানো হয় code
বাইরে বরাদ্দ করা হবে না while
লুপ. আমি চেষ্টা করেছি বহু বিভিন্ন পদ্ধতি যাইহোক, এই সব একটি মান পাইপিং সম্পর্কে হয় while
লুপ, পাইপ আউট একটি মান না while
লুপ.
আমি খুঁজে পাওয়া একটি workaround কেবল সম্পূর্ণ অপসারণ করা হয় eval
বিবৃতি, কিন্তু আমি একটি মূলনীতির মূল এক্সটেনসিবলি সংরক্ষণ করে এমন একটি পদ্ধতি চাই whatis
$PIPESTATUS
নিম্নলিখিত ত্রুটি দেয়$ whatis hi hi: nothing appropriate /usr/local/bin/whatis: line 92: return: can only `return' from a function or sourced script
যাইহোক, করছেনexit $PIPESTATUS
পরিবর্তেreturn
ঠিকভাবে কাজ করে