[ "$1" = "" ]
এবং [ -z "$1" ]
ব্যাশ এবং অন্যান্য পসিক্স-কমপ্লায়েন্ট শেলগুলির মধ্যে ঠিক সমান। (দ্রষ্টব্য যে বন্ধনীগুলির প্রতিটি পাশের মধ্যে অবশ্যই একটি স্পেস থাকতে হবে, যদি না শব্দ-উপাদানগুলির মতো অক্ষর থাকে ;
))
[
অন্যের মতো অন্তর্নির্মিত শেল; প্রকৃতপক্ষে এটিও বানান করা যেতে পারে test
( উভয়ের মধ্যে একমাত্র পার্থক্য হ'ল এটি সর্বশেষ যুক্তি হিসাবে [
প্রয়োজন ]
)। তাই আপনি যদি চালানো [ "$1" = "" ]
সঙ্গে $1
বিস্তৃত -z
: পরীক্ষা অপারেটর তিনটি আর্গুমেন্ট দেখেন -z
, =
এবং খালি স্ট্রিং। কিছু পুরানো বোর্ন শেল কখনও কখনও কোনও অপারেন্ডকে অপারেটরের মতো দেখতে এলে পার্স ত্রুটি ছুঁড়ে দেয়, এমনকি যদি সম্পূর্ণ এক্সপ্রেশনটিতে অস্পষ্টতা না থাকে। আমি জানি না যে কোনও সংস্করণে এই বিশেষ অভিব্যক্তিটি আসলেই সমস্যা ছিল কিনা, তবে আরও জটিল এক্সপ্রেশনগুলি এগুলি ফেলে দিতে পারে। এমন সংস্করণও থাকতে পারে যা খালি শব্দের সাথে সমস্যাযুক্ত ছিল; এগুলিও সমর্থন করত না [ -z "$1" ]
। একটি সাধারণ শেল আইডিয়ম হয়[ x"$1" = x"" ]
। অপারেটরদের অপারেটর হিসাবে পার্স করার কোনও ঝুঁকি এড়ানো যায় কারণ কোনও অপারেটর চিঠি দিয়ে শুরু করে না।
Ksh, bash এবং zsh এ, আপনি ডাবল বন্ধনী বাক্য গঠন ব্যবহার করতে পারেন [[ -z $1 ]]
,। এই নতুন সিনট্যাক্সটি (এটি ১৯ 1970০-এর দশকের মাঝামাঝির চেয়ে 1980 এর দশকের শেষের দিকের) একটি সাধারণ অন্তর্নির্মিত না করে একটি বিশেষ সিনট্যাকটিক কনস্ট্রাক্ট ব্যবহার করে অপারেটর হিসাবে পার্সড হওয়ার ঝুঁকি দূর করে। অপারেটরগুলি অবশ্যই আক্ষরিকভাবে উপস্থিত হবে, ডাবল বন্ধনীগুলির মধ্যে অনুপযুক্ত, এবং আপনার ভেরিয়েবল বিস্তৃতি দ্বিগুণ করার দরকার নেই।