ভিতরে bash যে পরিবর্তনশীল মূলত একটি স্ট্রিং (অথবা একটি অ্যারে অথবা একটি ফাংশন, কিন্তু নিয়মিত ভেরিয়েবল সম্পর্কে এখানে আসুন আলাপ)।
শর্তগুলি পরীক্ষার কমান্ডগুলির রিটার্ন মানগুলির উপর ভিত্তি করে বিশ্লেষণ করা হয় - রিটার্ন মান কোনও পরিবর্তনশীল নয়, এটি একটি প্রস্থান অবস্থা। যখন আপনি মূল্যায়ন করেন if [ ... ]বা if [[ ]]বা এর if grep somethingমতো অন্য কোনও কিছু, রিটার্ন মান 0 (স্ট্রিং 0 নয়, তবে প্রস্থান স্থিতি 0 = সাফল্য) এর অর্থ সত্য এবং বাকীটি অর্থ মিথ্যা (সুতরাং, সংকলিত প্রোগ্রামিং ভাষাগুলিতে আপনি যা ব্যবহার করছেন তার ঠিক বিপরীত, তবে যেহেতু সফল হওয়ার একটি উপায় এবং ব্যর্থ হওয়ার অনেকগুলি উপায় রয়েছে, এবং মৃত্যুদন্ড কার্যকর হওয়ার প্রত্যাশিত ফলাফলটি সাধারণত সাফল্য, যদি কিছু ভুল না হয় তবে 0 সবচেয়ে সাধারণ ডিফল্ট ফলাফল হিসাবে ব্যবহৃত হয়)। এটি খুব দরকারী কারণ যে কোনও বাইনারি পরীক্ষা হিসাবে ব্যবহার করা যেতে পারে - যদি এটি ব্যর্থ হয় তবে এটি মিথ্যা, অন্যথায় এটি সত্য।
trueএবং falseপ্রোগ্রামগুলি (সাধারণত বিল্টিনগুলি দ্বারা ওভাররাইড করা) কেবল ব্যবহারযোগ্য ছোট প্রোগ্রাম যা কিছুই করে না - কিছুই না করে trueসফল হয় এবং 0 দিয়ে প্রস্থান করে, যখন falseকিছু না করার চেষ্টা করে এবং "ব্যর্থ" হয়, 1 দিয়ে বেরিয়ে যায়, অর্থহীন শোনায় তবে এটি স্ক্রিপ্টিংয়ের পক্ষে খুব কার্যকর।
চারপাশে কীভাবে সত্যবাদিতা পাস করা যায়, এটি আপনার উপর নির্ভর করে। সত্য এবং ব্যবহারের জন্য কেবল "y" বা "হ্যাঁ" ব্যবহার করা বেশ সাধারণ বিষয় if [ x"$variable" = x"yes" ](ডামি স্ট্রিং সংযোজন করা হয়েছে xকারণ যদি $variableএটি শূন্য দৈর্ঘ্যের হয় তবে এটি একটি বোগাস কমান্ড তৈরি if [ = "yes" ]করতে বাধা দেয় যা পার্স করে না)। এটি কেবল ফাঁকের জন্য খালি স্ট্রিং ব্যবহার করতে কার্যকর হতে পারে এবং [ -z "$variable ]এটি শূন্য দৈর্ঘ্যের (বা -nএটি ননজারো হওয়ার জন্য) পরীক্ষা করার জন্য ব্যবহার করতে পারে।
যাইহোক, এটিতে আসলে বুলিয়ান মানগুলি পাস করার প্রয়োজন খুব বিরল bash- এটি কেবল exitব্যর্থতার পক্ষে বা একটি কার্যকর ফলাফল (বা যদি কিছু ভুল হয়ে যায় তবে শূন্য, এবং খালি স্ট্রিংয়ের জন্য পরীক্ষা করা) পাওয়া আরও সাধারণ বিষয়, এবং বেশিরভাগ ক্ষেত্রেই এটি হতে পারে প্রস্থান স্থিতি থেকে সরাসরি ব্যর্থতার জন্য পরীক্ষা।
আপনার ক্ষেত্রে, আপনি এমন একটি ফাংশন চান যা অন্য কোনও কমান্ড হিসাবে কাজ করবে (অতএব, সাফল্যে 0 ফিরে আসবে), সুতরাং আপনার শেষ বিকল্পটি সঠিক পছন্দ বলে মনে হচ্ছে।
এছাড়াও, আপনার এমনকি returnবিবৃতি প্রয়োজন হতে পারে না । যদি ফাংশনটি যথেষ্ট সহজ হয় তবে আপনি এটি ব্যবহার করতে পারেন যে এটি কেবল ফাংশনে শেষ সম্পাদিত কমান্ডের স্থিতি ফিরিয়ে দেয়। সুতরাং আপনার ফাংশন সহজভাবে হতে পারে
drive_xyz_available() {
[ -e /dev/disk/by-uuid/whatever ]
}
আপনি যদি কোনও ডিভাইস নোডের অস্তিত্বের /proc/mountsজন্য পরীক্ষা করে নিচ্ছেন (বা এটি মাউন্ট হয়েছে কিনা তা পরীক্ষা করার জন্য গ্রেপ )?
help true ; help false ; help exit