250+ upvote উত্তর থাকা সত্ত্বেও আমি যা বলি তা কেন আপনার যত্ন করা উচিত
এটা যে 0 = true
এবং না 1 = false
। এটি হ'ল শূন্য অর্থ ব্যর্থতা (সাফল্য) এবং অ-শূন্য অর্থ ব্যর্থতা (টাইপ এন এর) ।
যদিও নির্বাচিত উত্তরটি প্রযুক্তিগতভাবে "সত্য" তবে অনুগ্রহ করে আপনার return 1
কোডটিতে ** মিথ্যা বলে রাখবেন না । এর বেশ কয়েকটি দুর্ভাগ্যজনক পার্শ্ব প্রতিক্রিয়া হবে।
- অভিজ্ঞ বিকাশকারীরা আপনাকে অপেশাদার হিসাবে চিহ্নিত করবে (নীচের কারণে)
- অভিজ্ঞ বিকাশকারীরা এটি করবেন না (নীচের সমস্ত কারণে)।
- এটি ত্রুটিযুক্ত প্রবণ।
- এমনকি অভিজ্ঞ বিকাশকারীগণ যথাক্রমে 0 এবং 1 টি ভুল এবং সত্য হিসাবে ভুল করতে পারেন (উপরের কারণে)।
- এটি বহিরাগত এবং হাস্যকর মন্তব্য প্রয়োজন (বা উত্সাহিত করবে)।
- প্রকৃত রিটার্ন স্ট্যাটাসের চেয়ে এটি আসলে কম সহায়ক।
কিছু বাশ শিখুন
ব্যাশ ম্যানুয়াল বলছেন (জোর খনি)
ফিরে [এন]
শেল ফাংশনটি কার্যকর করা বন্ধ করুন এবং এর কলকে মান n ফেরান। যদি এন সরবরাহ না করা হয় তবে ফিরতি মান হ'ল ফাংশনে সম্পাদিত শেষ কমান্ডের প্রস্থান স্থিতি ।
সুতরাং, সত্য ও মিথ্যা নির্দেশ করতে আমাদের 0 ও 1 ব্যবহার করতে হবে না। তারা এগুলি করে এমন ঘটনাটি কেবলমাত্র ডিবাগিং কোড, সাক্ষাত্কারের প্রশ্নাবলী এবং newbies মনকে উড়িয়ে দেওয়ার জন্য প্রয়োজনীয় তুচ্ছ জ্ঞান।
বাশ ম্যানুয়ালও বলে
অন্যথায় ফাংশনটির রিটার্নের স্থিতি হ'ল শেষ আদেশের নির্বাহ স্থিতি
বাশ ম্যানুয়ালও বলে
( $? ) সর্বাধিক সম্পাদিত সম্পাদিত অগ্রভাগের পাইপলাইনটির প্রস্থান স্থিতিতে প্রসারিত ।
ওহ, অপেক্ষা করুন। পাইপলাইন? আসুন আরও একবার ব্যাশ ম্যানুয়াল চালু করুন ।
একটি পাইপলাইন নিয়ন্ত্রণ অপারেটরগুলির একটি দ্বারা পৃথক করা এক বা একাধিক কমান্ডের অনুক্রম | বা '| &'।
হ্যাঁ. তারা বলেছিল যে 1 কমান্ড একটি পাইপলাইন। অতএব, এই উক্তিগুলির 3 টিই একই কথা বলছে।
$?
আপনাকে শেষ ঘটনাটি জানায়।
- এটা বুদবুদ।
আমার উত্তর
সুতরাং, কম্বুস যখন দেখালেন যে এই জাতীয় কোনও সাধারণ ক্রিয়াকলাপের সাথে, কোনও return
প্রয়োজন নেই । আমি মনে করি এটি পড়বে এমন বেশিরভাগ মানুষের চাহিদার তুলনায় অবাস্তববাদীভাবে সহজ ছিল।
কেন return
?
যদি কোনও ফাংশন তার শেষ কমান্ডের প্রস্থান স্থিতি ফিরে আসতে চলেছে তবে কেন এগুলি ব্যবহার করবে return
? কারণ এটি কোনও ক্রিয়াকলাপ সম্পাদন বন্ধ করে দেয়।
একাধিক শর্তে কার্যকর করা বন্ধ করুন
01 function i_should(){
02 uname="$(uname -a)"
03
04 [[ "$uname" =~ Darwin ]] && return
05
06 if [[ "$uname" =~ Ubuntu ]]; then
07 release="$(lsb_release -a)"
08 [[ "$release" =~ LTS ]]
09 return
10 fi
11
12 false
13 }
14
15 function do_it(){
16 echo "Hello, old friend."
17 }
18
19 if i_should; then
20 do_it
21 fi
আমাদের এখানে যা আছে ...
লাইনটি 04
একটি স্পষ্ট [-ish] সত্য প্রত্যাবর্তন কারণ &&
এলএইচএস সত্য হলে কেবলমাত্র এর আরএইচএস কার্যকর করা হয়
লাইনটি 09
সত্য বা মিথ্যা লাইনের স্থিতির সাথে মিলে যায়08
লাইনের 13
কারণে লাইনে মিথ্যা ফিরিয়ে দেয়12
(হ্যাঁ, এটিকে অবহেলা করা যেতে পারে তবে পুরো উদাহরণটি বোঝা যায়))
আর একটি সাধারণ প্যাটার্ন
# Instead of doing this...
some_command
if [[ $? -eq 1 ]]; then
echo "some_command failed"
fi
# Do this...
some_command
status=$?
if ! $(exit $status); then
echo "some_command failed"
fi
status
ভেরিয়েবল নির্ধারণ কীভাবে এর অর্থকে ক্ষুন্ন করে তা লক্ষ্য করুন $?
। (অবশ্যই আপনি এর $?
অর্থটি জানেন তবে কোনও দিন আপনার কাছে গুগলের কাছে কম জ্ঞানহীন কাউকে থাকতে হবে your যদি আপনার কোড উচ্চ ফ্রিকোয়েন্সি ট্রেড না করে তবে কিছু ভালবাসা প্রদর্শন করুন , ভেরিয়েবলটি সেট করুন)) তবে আসল গ্রহণযোগ্যতা হ'ল "যদি অস্তিত্ব নেই "বা বিপরীতে" যদি প্রস্থান স্থিতি "উচ্চস্বরে পড়া যায় এবং তাদের অর্থ ব্যাখ্যা করা যায়। তবে, এটি শেষটি কিছুটা উচ্চাভিলাষী হতে পারে কারণ শব্দটি দেখলে exit
আপনি ভাবতে পারেন যে এটি স্ক্রিপ্টের বাইরে চলেছে, যখন বাস্তবে এটি $(...)
সাবসেলের বাইরে চলেছে ।
** আপনি যদি পুরোপুরি return 1
মিথ্যা ব্যবহারের জন্য জোর দিয়ে থাকেন তবে আমি আপনাকে return 255
পরিবর্তে কমপক্ষে ব্যবহারের পরামর্শ দিচ্ছি । এটি আপনার ভবিষ্যতের স্ব, বা অন্য কোনও বিকাশকারীকে আপনার কোড বজায় রাখতে হবে এমন প্রশ্নের কারণ করবে "এটি কেন 255?" তারপরে তারা কমপক্ষে মনোযোগ দিচ্ছেন এবং কোনও ভুল এড়ানোর আরও ভাল সুযোগ পাবেন।
function
শব্দটি ফেলে দিন ,myfun() {...}
যথেষ্ট