bash - বাশ ভেরিয়েবল সমান 0 চেক করুন



equals zero (4)

আপনার depth পরিবর্তনশীল সেট অদৃশ্য মনে হচ্ছে। এর অর্থ হল [ $depth -eq $zero ] [ -eq 0 ] ভেরিয়েবলগুলির মানগুলি প্রতিস্থাপনের পরে অভিব্যক্তি [ $depth -eq $zero ] [ -eq 0 ] হয়ে যায়। এখানে সমস্যা হল যে -eq অপারেটরটি একটি অপারেটর হিসাবে ভুলভাবে শুধুমাত্র একটি যুক্তি (শূন্য) ব্যবহার করা হয় তবে এটি দুটি আর্গুমেন্টের প্রয়োজন। সেইজন্য আপনি unary অপারেটর ত্রুটির বার্তা পাবেন।

সম্পাদন করুন: ডক্টর জে এই উত্তরটিতে তার মন্তব্যের উল্লেখ হিসাবে, চেকগুলিতে অনির্বাচিত ভেরিয়েবলগুলির সমস্যাগুলি এড়ানোর জন্য একটি নিরাপদ উপায় হল "" এ ভেরিয়েবলগুলিকে ঘিরে রাখা। ব্যাখ্যা জন্য তার মন্তব্য দেখুন।

if [ "$depth" -eq "0" ]; then
   echo "false";
   exit;
fi

একটি unset ভেরিয়েবল ব্যবহার [ কমান্ড bash খালি খালি দেখায়। নিচের পরীক্ষাগুলি ব্যবহার করে আপনি এটি যাচাই করতে পারেন যা সমস্ত true মূল্যায়ন করে কারণ xyz হয় খালি বা অনির্বাচিত:

  • if [ -z ] ; then echo "true"; else echo "false"; fi
  • xyz=""; if [ -z "$xyz" ] ; then echo "true"; else echo "false"; fi
  • unset xyz; if [ -z "$xyz" ] ; then echo "true"; else echo "false"; fi

এই প্রশ্নটি ইতিমধ্যে একটি উত্তর আছে:

আমার একটি ব্যাশ পরিবর্তনশীল গভীরতা আছে এবং আমি যদি 0 সমান কিনা তা পরীক্ষা করতে চাই। হ্যাঁ, আমি স্ক্রিপ্ট নির্বাহ বন্ধ করতে চাই। এ পর্যন্ত আমি আছে:

zero=0;

if [ $depth -eq $zero ]; then
    echo "false";
    exit;
fi

দুর্ভাগ্যবশত, এই বাড়ে:

 [: -eq: unary operator expected

(অনুবাদের কারণে কিছুটা ভুল হতে পারে)

অনুগ্রহপূর্বক, কিভাবে আমি এটি পেতে আমার স্ক্রিপ্ট সংশোধন করতে পারি?


আপনি এই বিন্যাসটি ব্যবহার করতে পারেন এবং তুলনা অপারেটরগুলি ব্যবহার করতে পারেন যেমন '==' '<='

  if (( $total == 0 )); then
      echo "No results for ${1}"
      return
  fi

চেষ্টা করুন:

zero=0;

if [[ $depth -eq $zero ]]; then
  echo "false";
  exit;
fi

ডাবল বন্ধনী (( ... )) গাণিতিক অপারেশন জন্য ব্যবহার করা হয়।

ডাবল বর্গাকার বন্ধনী [[ ... ]] নিচের অপারেটরদের সাথে সংখ্যাগুলির তুলনা এবং পরীক্ষা করতে (শুধুমাত্র পূর্ণসংখ্যা সমর্থিত) ব্যবহার করা যেতে পারে:

· NUM1 -eq NUM2 returns true if NUM1 and NUM2 are numerically equal.

· NUM1 -ne NUM2 returns true if NUM1 and NUM2 are not numerically equal.

· NUM1 -gt NUM2 returns true if NUM1 is greater than NUM2.

· NUM1 -ge NUM2 returns true if NUM1 is greater than or equal to NUM2.

· NUM1 -lt NUM2 returns true if NUM1 is less than NUM2.

· NUM1 -le NUM2 returns true if NUM1 is less than or equal to NUM2.

উদাহরণ স্বরূপ

if [[ $age > 21 ]] # bad, > is a string comparison operator

if [ $age > 21 ] # bad, > is a redirection operator

if [[ $age -gt 21 ]] # okay, but fails if $age is not numeric

if (( $age > 21 )) # best, $ on age is optional




zero