এখানে দুটি সম্পর্কিত সমস্যা আছে।
প্রথমত, ওপির প্রশ্ন, কেন 0 সত্য তবে শেলের মধ্যে 1 টি মিথ্যা? এবং দ্বিতীয়টি, কেন অ্যাপ্লিকেশনগুলি সাফল্যের জন্য 0 এবং ব্যর্থতার জন্য শূন্য নয়?
ওপির প্রশ্নের উত্তর দেওয়ার জন্য আমাদের দ্বিতীয় প্রশ্নটি বুঝতে হবে। এই পোস্টের অসংখ্য উত্তর বর্ণনা করেছে যে এটি একটি সম্মেলন এবং এই সম্মেলনের অধিভুক্ত কিছু চমৎকার তালিকাভুক্ত হয়েছে। এর মধ্যে কয়েকটি চমত্কার নীচে সংক্ষিপ্তসারিত হয়।
কেন সাফল্যের জন্য অ্যাপ্লিকেশনগুলি 0 এবং ব্যর্থতার জন্য শূন্য নয়?
কোনও অপারেশনকে অনুরোধ করে এমন কোডে অপারেশনের প্রস্থান স্থিতি সম্পর্কে দুটি জিনিস জানতে হবে। অপারেশনটি কি সফলভাবে প্রস্থান করলেন? [* 1] এবং যদি অপারেশন সফলভাবে প্রস্থান না হয় তবে কেন অপারেশন ব্যর্থভাবে বেরিয়ে গেল? কোনও মান সাফল্য বোঝাতে ব্যবহৃত হতে পারে। তবে 0 অন্য যে কোনও সংখ্যার তুলনায় বেশি সুবিধাজনক কারণ এটি প্ল্যাটফর্মগুলির মধ্যে পোর্টেবল। ১ Aug আগস্ট ২০১১ এ এই প্রশ্নের উত্তরটি সংক্ষিপ্ত করে :
জিরো এনকোডিং-স্বতন্ত্র।
যদি আমরা একটি 32 (বিট) পূর্ণসংখ্যার শব্দের মধ্যে একটি (1) সঞ্চয় করতে চাই, তবে প্রথম প্রশ্নটি হবে "বিগ-এন্ডিয়ান শব্দ বা ছোট-এন্ডিয়ান শব্দ?", তারপরে "বাইটস কতক্ষণ একটি ছোট-এন্ডিয়ান শব্দটি রচনা করে? ", যখন শূন্য সবসময় একই দেখায়।
এছাড়াও এটি আশা করা দরকার যে কিছু লোক কিছু সময়ে চর বা সংক্ষিপ্ত বা এমনকি ভাসতে ভ্রমন করার জন্য ভুল করে ফেলে। (অন্তর্) ((চর) ENOLCK) ENOLCK নয় যখন চর কমপক্ষে 8-বিট দীর্ঘ না হয় (7-বিট ASCII চর মেশিনগুলি ইউএনআইএক্স দ্বারা সমর্থিত হয়), (ইনট) ((চর) 0) 0 এর থেকে পৃথক হয় চরের আর্কিটেকচারাল বিবরণ।
একবার এটি নির্ধারিত হয় যে 0 সাফল্যের জন্য প্রত্যাবর্তন মান হবে, তবে ব্যর্থতার জন্য কোনও শূন্য-মান ব্যবহার করা বোধগম্য। অপারেশন কেন ব্যর্থ হয়েছিল তা প্রশ্নের উত্তর দিতে এটি অনেক প্রস্থান কোডকে অনুমতি দেয় ।
কেন 0 সত্য তবে শেলটিতে মিথ্যা 1?
শেলগুলির মৌলিক ব্যবহারগুলির মধ্যে একটি হ'ল প্রক্রিয়াগুলি স্ক্রিপ্ট করে স্বয়ংক্রিয় করে তোলা। সাধারণত এর অর্থ অপারেশন শুরু করা এবং তারপরে অপারেশনটির প্রস্থান স্থিতির ভিত্তিতে শর্তাধীন অন্য কিছু করা। ফিলিপ এ এই পোস্টে তার উত্তরে সুন্দরভাবে ব্যাখ্যা করেছিলেন
ব্যাশ এবং সাধারণভাবে ইউনিক্স শেলগুলিতে, রিটার্ন মানগুলি বুলিয়ান নয়। এগুলি পূর্ণসংখ্যার প্রস্থান কোডগুলি।
এই অপারেশনগুলির প্রস্থান স্থিতিটি বুলিয়ান মান হিসাবে ব্যাখ্যা করার পরে এটি প্রয়োজনীয়। এটি সফল ( 0
) থেকে বেরিয়ে আসার স্থিতিকে সত্য এবং কোনও অ-শূন্য / ব্যর্থতার প্রস্থান স্থিতিকে মিথ্যা হিসাবে মানচিত্র তৈরি করে তোলে । এটি করার ফলে শৃঙ্খলিত শেল কমান্ডগুলির শর্তসাপেক্ষ কার্যকর করা সম্ভব হয়।
এখানে একটি উদাহরণ mkdir deleteme && cd $_ && pwd
। শেলটি 0 টির মতো সত্য ব্যাখ্যা করে কারণ এই কমান্ডটি প্রত্যাশা মতো সুবিধামত কাজ করে। শেলটি যদি 0 টি মিথ্যা হিসাবে ব্যাখ্যা করে থাকে তবে প্রতিটি ক্রিয়াকলাপের জন্য আপনাকে ব্যাখ্যা করা প্রস্থান স্থিতিটি উল্টাতে হবে।
সংক্ষেপে, অ্যাপ্লিকেশনগুলি সফল প্রস্থান স্থিতির জন্য 0 প্রত্যাবর্তন করে কনভেনশনটি দেওয়া হলেও শেলটি 0 টি মিথ্যা হিসাবে ব্যাখ্যা করা অযৌক্তিক হবে।
[* 1]: হ্যাঁ, অনেক সময় অপারেশনগুলিকে কেবল একটি সাধারণ সাফল্যের বার্তা ছাড়াও বেশি ফিরে আসা দরকার তবে এটি এই থ্রেডের পরিধি ছাড়াই।
অ্যাডভান্সড ব্যাশ-স্ক্রিপ্টিং গাইডে পরিশিষ্ট Eও দেখুন