সংখ্যাসূচক তুলনা operands -eq
, -gt
, -lt
, -ge
, -le
এবং -ne
গাণিতিক এক্সপ্রেশন হিসাবে নেয়া হয়। কিছু সীমাবদ্ধতার সাথে, তাদের এখনও একক শেল শব্দ হওয়া দরকার।
পাটিগণিতের বহিঃপ্রকাশে পরিবর্তনশীল নামের আচরণটি শেল অ্যারিমেটমিকতে বর্ণিত :
শেল ভেরিয়েবল অপারেন্ডস হিসাবে অনুমোদিত; অভিব্যক্তিটি মূল্যায়নের আগে প্যারামিটার সম্প্রসারণ করা হয়। একটি অভিব্যক্তির মধ্যে, শেল ভেরিয়েবলগুলি পরামিতি প্রসারণ সিনট্যাক্স ব্যবহার না করে নাম দ্বারাও উল্লেখ করা যেতে পারে। প্যারামিটার এক্সপেনশন সিনট্যাক্স ব্যবহার না করে নাম দ্বারা রেফারেন্স করা হলে শেল পরিবর্তনশীল যা নাল বা আনসেট হয় 0 এ মূল্যায়ন করে।
এবং যদিও:
কোনও ভেরিয়েবলের মান উল্লেখ করা হয় যখন এটি গাণিতিক এক্সপ্রেশন হিসাবে উল্লেখ করা হয়
তবে আমি আসলে ডকুমেন্টেশনের অংশটি খুঁজে পাই না যেখানে বলা হয়েছে যে সংখ্যার তুলনাগুলি গাণিতিক ভাব প্রকাশ করে take এটি কন্ডিশনাল কনস্ট্রাক্টস এর অধীনে [[
বর্ণিত নয় বা বাশ শর্তসাপেক্ষ এক্সপ্রেশনগুলিতে বর্ণনা করা হয়নি ।
কিন্তু, পরীক্ষার দ্বারা, এটি উপরে বলা হিসাবে কাজ করবে বলে মনে হচ্ছে।
সুতরাং, এই জাতীয় জিনিসগুলি কাজ করে:
a=6
[[ a -eq 6 ]] && echo y
[[ 1+2+3 -eq 6 ]] && echo y
[[ "1 + 2 + 3" -eq 6 ]] && echo y
এটিও (ভেরিয়েবলের মান মূল্যায়ন করা হয়):
b='1 + 2 + 3'
[[ b -eq 6 ]] && echo y
তবে এটি হয় না; [[ .. ]]
পার্স করার সময় এটি কোনও একক শেল শব্দ নয় , সুতরাং শর্তাধীন একটি বাক্য গঠন আছে:
[[ 1 + 2 + 3 -eq 6 ]] && echo y
অন্যান্য পাটিগণিত প্রসঙ্গে, সাদা অংশ ছাড়া ভাব প্রকাশের দরকার নেই। এই মুদ্রণগুলি 999
, বন্ধনীগুলি সূচকগুলিতে নির্বিঘ্নে পাটিগণিতের প্রকাশকে সীমিত করে দেয়:
a[6]=999; echo ${a[1 + 2 + 3]}
অন্যদিকে, =
তুলনাটি একটি প্যাটার্ন ম্যাচ , এবং এটি গাণিতিককে জড়িত করে না বা কোনও গাণিতিক প্রসঙ্গে (শর্তাধীন কনস্ট্রাক্টস) স্বয়ংক্রিয় পরিবর্তনশীল প্রসারণও জড়িত না:
যখন ==
এবং !=
অপারেটরদের ব্যবহার করা হয়, অপারেটর ডানদিকে স্ট্রিং, প্যাটার্ন ম্যাচিং মধ্যে নীচে বর্ণিত নিয়ম অনুযায়ী একটি প্যাটার্ন বিবেচনা করা এবং extglob শেল বিকল্প হিসাবে যদি সক্ষম হয় মিলেছে করা হয়। =
অপারেটর অভিন্ন ==
।
সুতরাং এটি মিথ্যা কারণ স্ট্রিংগুলি স্পষ্টতই পৃথক:
[[ "1 + 2 + 3" = 6 ]]
এটি যেমন, সংখ্যাসূচক মান একই হলেও:
[[ 6 = 06 ]]
এবং এখানেও, স্ট্রিংগুলি ( x
এবং 6
) তুলনা করা হয়, সেগুলি পৃথক:
x=6
[[ x = 6 ]]
এটি চলকটি প্রসারিত করবে, তবে এটি সত্য:
x=6
[[ $x = 6 ]]
x=1
অনুসরণ করেন তবে আপনার মূল্যায়ন কি পরিবর্তন হয়[[ x -gt 2]]
?