ফাঁদ কার্যকর (exit 1);করার সহজ উপায় হ'ল কার্যকর করা ERR। set -eকার্যকর হলে এটি তাত্ক্ষণিক প্রস্থানকে ট্রিগার করবে । (ত্রুটি শর্তটি ট্রিগার করতে ব্যর্থ হওয়ার জন্য একটি কমান্ড প্রয়োজন; exitসাব-শেলের একটি ব্যর্থতার সাথে সাবস্কেলটি ব্যর্থ হয়))
exit 1; এই জিনিসগুলির কোনটিই করবে না।
সুতরাং {(exit 1); exit 1;}প্রথমে ERRফাঁদ তৈরি করতে ব্যবহার করা যেতে পারে , যা ডিবাগিং উদ্দেশ্যে কার্যকর কিছু করতে পারে এবং এরপরে ত্রুটির ইঙ্গিত দিয়ে স্ক্রিপ্টটি শেষ করে।
কিন্তু autoconfফাইলগুলিতে যা চলছে তা নয় । autoconfস্ক্রিপ্টগুলি EXITরান চলাকালীন তৈরি অস্থায়ী ফাইলগুলি পরিষ্কার করার জন্য ফাঁদে ভরসা করে । বেশিরভাগ শেলগুলি, ফাঁদে কল দেওয়ার আগে কমান্ডের bashদেওয়া মান থেকে স্থিতি নির্ধারণ করে । এটি ফাঁদটিকে কোনও ত্রুটি থেকে বা সাধারণ অবসান থেকে ডেকে আনা হয়েছিল কিনা তা সনাক্ত করতে পারে এবং এটি ফাঁদ অপারেশনের শেষে প্রস্থান স্থিতি সঠিকভাবে সেট করা আছে কিনা তা নিশ্চিত করার অনুমতি দেয় toexitEXITEXIT
তবে দৃশ্যত কিছু শাঁস সহযোগিতা করে না। autoconfম্যানুয়ালটির একটি উদ্ধৃতি এখানে :
কিছু শেল স্ক্রিপ্ট যেমন উত্পাদিত autoconf, প্রস্থান করার আগে পরিষ্কার করার জন্য একটি ফাঁদ ব্যবহার করে। যদি সর্বশেষ শেল কমান্ডটি ননজারো স্ট্যাটাসের সাথে প্রস্থান করা হয়, তবে ফাঁদটি ননজারো স্ট্যাটাসের সাথে প্রস্থান করা হয় যাতে চালকটি বলতে পারে যে একটি ত্রুটি ঘটেছে।
দুর্ভাগ্যক্রমে, সোলারিসের মতো কয়েকটি শেলের মধ্যে /bin/shএকটি প্রস্থান ফাঁদ প্রস্থান কমান্ডের যুক্তি উপেক্ষা করে। এই শেলগুলিতে, কোনও ফাঁদ এটি নির্ধারণ করতে পারে না যে এটি সরল প্রস্থান বা প্রস্থান দ্বারা আহ্বান করা হয়েছিল 1 AC_MSG_ERROR.
কমান্ড কার্যকর হওয়ার আগে নির্ধারিত $?স্থিতি রয়েছে কিনা তা নিশ্চিত করে কাজটি করা হয়, যাতে ফাঁদ কার্যকর হওয়ার পরে অবশ্যই এটির মান থাকে । এবং, প্রকৃতপক্ষে, এটি ম্যাক্রো যা অদ্ভুত কোডটি সন্নিবেশ করিয়ে দেয়, অনর্থক ধনুর্বন্ধনী দিয়ে সম্পূর্ণ।exitEXITAC_MSG_ERROR
falseপরিবর্তে মৃত্যুদণ্ড দেওয়া হয় না কেন(exit 1)?