ইন bash
, দুটি আর্গুমেন্ট প্রসঙ্গে test
কমান্ড, -a file
এবং -e file
একই। তবে তাদের কিছু পার্থক্য রয়েছে, কারণ -a
এটি বাইনারি অপারেটরও।
-e
Unary POSIX দ্বারা সংজ্ঞায়িত করা হয়, কিন্তু -a
unary নয়। পসিক্স কেবল -a
বাইনারি সংজ্ঞায়িত করে ( পরীক্ষা পসিক্স দেখুন )।
POSIX তিনটি আর্গুমেন্ট test
আচরণ নির্ধারণ করে:
3 টি যুক্তি:
যদি $ 2 বাইনারি প্রাথমিক হয় তবে $ 1 এবং $ 3 এর বাইনারি পরীক্ষা করুন।
যদি $ 1 হ'ল '!', তবে $ 2 এবং $ 3 এর দ্বি-যুক্তির পরীক্ষাটি উপেক্ষা করুন।
যদি $ 1 হয় '(' এবং $ 3 হল ')', তবে $ 2 এর অবিচ্ছিন্ন পরীক্ষা করুন। যেসব সিস্টেমে এক্সএসআই বিকল্প সমর্থন করে না, তাদের ক্ষেত্রে ফলাফলগুলি অনির্ধারিত থাকে যদি $ 1 হয় '(' এবং $ 3 হয় ')'।
অন্যথায়, অনির্দিষ্ট ফলাফল উত্পাদন করুন।
সুতরাং -a
এছাড়াও অদ্ভুত ফলাফল বাড়ে:
$ [ ! -a . ] && echo true
true
-a
তিনটি যুক্তি প্রসঙ্গে বাইনারি অপারেটর হিসাবে বিবেচিত হয়। দেখুন ব্যাশ প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী প্রশ্ন ই 1 । -a
পক্সিক্সে উল্লেখ করা হয়েছে যে কর্নশেল থেকে প্রাপ্ত তবে পরে পরিবর্তিত হয়েছিল -e
কারণ এটি -a
বাইনারি এবং ইউনিারিগুলির মধ্যে বিভ্রান্তিকর হয়ে পড়ে -a
।
সি-শেল দ্বারা সরবরাহিত অনুরূপ কার্যকারিতা সম্বলিত -e প্রাথমিকটি যুক্ত করা হয়েছিল কারণ এটি শেল স্ক্রিপ্টের জন্য ফাইলটি খোলার চেষ্টা না করে কোনও ফাইল উপস্থিত রয়েছে কিনা তা খুঁজে পাওয়ার একমাত্র উপায় প্রদান করে। যেহেতু বাস্তবায়নগুলি অতিরিক্ত ফাইল প্রকার যুক্ত করার অনুমতি দেয় তাই পোর্টেবল স্ক্রিপ্টটি ব্যবহার করতে পারে না:
পরীক্ষা-বি ফু -ও -সি ফু-ও -ডি-ফু-ও -ফ ফু-ও -পি ফু
foo একটি বিদ্যমান ফাইল কিনা তা খুঁজে বের করার জন্য। BSতিহাসিক বিএসডি সিস্টেমে কোনও ফাইলের অস্তিত্ব নির্ধারণ করা যেতে পারে:
পরীক্ষা - foo -o -d foo
তবে বিদ্যমান ফাইলটি নিয়মিত ফাইল ছিল তা নির্ধারণের জন্য সহজ উপায় ছিল না। প্রাথমিক প্রস্তাবে কর্নশেল-প্রাথমিক ব্যবহার করা হয়েছিল (একই অর্থ সহ) তবে এটি পরিবর্তন করে -e করা হয়েছিল কারণ মানুষের উচ্চ সম্ভাবনা সম্পর্কে একটি বাইনারি অপারেটরের সাথে -a প্রাথমিককে বিভ্রান্ত করার বিষয়ে উদ্বেগ রয়েছে।
-a
বাইনারি এছাড়াও অপ্রচলিত হিসাবে চিহ্নিত করা হয়, কারণ এটি কিছু অস্পষ্ট অভিব্যক্তি বাড়ে, যার মধ্যে 4 টিরও বেশি আর্গুমেন্ট রয়েছে। এই> 4 টি আর্গুমেন্ট এক্সপ্রেশন দিয়ে, পসিক্স সংজ্ঞা দেয় ফলাফল অনির্ধারিত।