ব্যাশ ফাংশন থেকে আমি কীভাবে ব্যর্থতার মান ফিরিয়ে দেব?


4

পটভূমি

এই পোস্টে , নিম্নলিখিত সমাধান পোস্ট করা হয়েছিল:

function cmakerel {
    if expr match "$PWD" '*bld*' >/dev/null ; then
        cmake -D....
    else
        echo "Wrong directory!"
    fi
}

cmakerelএকটি ডাকা হবে cmake, কমান্ড যদি PWDগেছে bldতার নাম হবে।

তবে আমি সাধারণত এই আদেশটি অনুরোধ করি: cmakerel && make check

প্রশ্ন

আমি কীভাবে উপরের কোডটি সংশোধন করব যাতে এটি ব্যর্থতার উপর এমন কোনও মান দেয় যাতে দ্বিতীয় অংশটি make checkআহ্বান না করে?

সম্ভবত কিছু ধরণের শূন্য-মান ফিরিয়ে নেওয়া উচিত।

উত্তর:


5

যোগ

return $?

একই নীচের cmakeকোড সহ ফাংশন থেকে প্রস্থান করতে cmakeএবং যুক্ত করতে কলের নীচে

return 1

echoকল সহ নীচে থেকে প্রস্থান করুন 1, যা শূন্য নয় এবং সুতরাং একটি ত্রুটি নির্দেশ করে।


আপনি বিকল্পভাবে (যদি আপনি উভয় আদেশকে সংযুক্তিতে makeকল করেন ) এই কার্যটিতে কলটি যুক্ত করতে পারেন:

 cmake [args] && make -j4

বা, উদাহরণস্বরূপ আরও সূক্ষ্ম ত্রুটিযুক্ত ত্রুটি পরিচালনার জন্য:

cmake [args]
local _ret=$?
if [ $_ret -ne 0 ] ; then
   echo "cmake returned with exit code $_ret, aborting!" >&2
   return $_ret
fi
make -j4

যদি আপনি এটিকে একটি স্বতন্ত্র প্রোগ্রাম হিসাবে কল করেন, অর্থাত শেল স্ক্রিপ্টে ফাংশনটি সংরক্ষণ করুন এবং যেমন অনুরোধ করুন

/path/to/cmakerel.sh

তারপরে আপনি পুরো প্রোগ্রামটি / সাবসেল বাতিল করার exitপরিবর্তে ব্যবহার করতে পারেন return।


উফ - ব্যর্থতায়, এটি আমার শেল থেকে বেরিয়ে এসেছে! কোন বিকল্প?
— kfmfe04

@ kfmfe04 আমি ভেবেছিলাম আপনি এটাকে শেল স্ক্রিপ্ট প্রোগ্রাম হিসাবে বলেছেন, আমার খারাপ bad আপনি পরবর্তী পদক্ষেপগুলি না করে আপনি সর্বদা সহজভাবে ফিরে আসতে পারেন।
— ড্যানিয়েল বেক

tyvm - দুর্দান্ত কাজ!
— kfmfe04

@ kfmfe04 স্নিপেটগুলির মধ্যে একটিতে টাইপ ছিল যা আমি এখনই ঠিক করেছি। এর জন্যে দুঃখিত.
— ড্যানিয়েল বেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.