বাশ তুলনা এবং এক্সপ্রেশন অপারেটর


11

আমি বাশ প্রোগ্রামিংয়ে নতুন। আমি দুটি ভাল, দীর্ঘ গাইড পড়েছি তবে তারা অপারেটর এবং কীওয়ার্ড সম্পর্কে আমার মাথায় একটি গোলমাল করেছে।

কোনটি বেশি সাধারণ এবং বহুল ব্যবহৃত হয়? কখন এবং কেন ব্যবহার করব তা আমি জানি না।

  1. test, [[ ]]বা [ ]এমনকি(( ))
  2. $((exp)) অথবা $[exp]
  3. -gtবা >, geবা >=ইত্যাদি
  4. কখন ব্যবহার করতে হবে <এবং >বা ( )কখন আমাদের এড়িয়ে যেতে হবে \: \< \(ইত্যাদি
  5. ==বা =(স্ট্রিং তুলনা)

আমি মধ্যে মৌলিক পার্থক্য জানেন [এবং [[কিন্তু অন্য কোন প্রশ্ন আমার জন্য একটি রহস্য আছে।

তুমাকে অগ্রিম ধন্যবাদ


2
একটি খুব দরকারী উইকি যা আপ টু ডেট এবং অনেক ভাল অনুশীলনের উল্লেখ করেছে গ্রেগের উইকি । সেখানে বাশ গাইড এবং FAQ বিশেষত কার্যকর particularly

উত্তর:


5
  • testহ'ল একটি শেল বিল্ট ইন যা (স্পষ্টতই) কিছু প্রদত্ত অবস্থার জন্য পরীক্ষা করে। কিছু পুরানো শেলের একটি বিশেষ কমান্ড প্রয়োজন। সুতরাং আপনি একটি প্রোগ্রাম পাবেন /usr/bin/test
  • [কিছু শর্তের জন্য পরীক্ষা করার প্রোগ্রামও। এই সফ্টওয়্যারটির একটি বন্ধনী বন্ধনীও প্রয়োজন এবং আপনি এটি এটি খুঁজে পেতে পারেন /usr/bin/[
  • [[…]]testএবং এর বিকল্প [। এটি কর্ন শেল ( ksh) এর জন্য তৈরি করা হয়েছিল । তবে আপনি এটি 2 এর চেয়ে বড় বা জেড শেলের মধ্যে বাশ সংস্করণেও খুঁজে পেতে পারেন। ডাবল বন্ধনীগুলিতে কিছু নিফটি বৈশিষ্ট্য রয়েছে:
    • শেলটি কোনও শব্দ বিভাজন বা ফাইলের নাম প্রসারিত করে না।
    • আপনার কোন উদ্ধৃতি দরকার নেই।
    • বদলে -a(এবং) অথবা -o(বা) আপনি ব্যবহার করতে পারেন &&বা ||
    • =আরো অনেক কাজ করতে পারেন।
  • ((…))সমতূল্য let। সুতরাং মূলত ((expression))একই let "expression"। তবে letআপনি একাধিক এক্সপ্রেশন ব্যবহার করতে পারেন, তবে ডাবল ব্রেস শুধুমাত্র একটি অভিব্যক্তি অনুমতি দেয়।
  • $((…))(এবং এছাড়াও $[…]) কিছু গণনা করে। আপনি শেলটি বন্ধনীগুলির ভিতরে এক্সপ্রেশন গণনা করার চেষ্টা করেন এবং ফলাফলটির সাথে অভিব্যক্তিটি প্রতিস্থাপন করেন। সুতরাং echo $((1+1))বাড়ে echo 2। সুতরাং আপনার শেলগুলি 2 নম্বর মুদ্রণ করে।

প্রতিবার আপনি দুটি সংখ্যার তুলনা করতে আপনি একটি ড্যাশ এবং দুই অক্ষর (সঙ্গে বিকল্প ব্যবহার করা উচিত চান -ge, -ltইত্যাদি)। আপনি যদি স্ট্রিংগুলির তুলনা করতে চান তবে আপনার ব্যবহার করা উচিত =বা !=

পালানোর বিষয়ে আপনার প্রশ্নের উত্তর দেওয়া বেশ কঠিন। কারণ এটি শেল ছাড়াও আপনি যে সফ্টওয়্যারটি ব্যবহার করেন তার উপর নির্ভর করে। সুতরাং ie grepএবং grep -Eবিভিন্ন পালানোর প্রয়োজন। এই সঙ্গে কেস sed, awkএবং অন্যদের। সুতরাং ম্যানপেজটি একবার দেখার জন্য সর্বোত্তম বিকল্প। কিছু সময় পরে আপনি অভ্যস্ত হয়ে যান এবং কখন পালানো ব্যবহার করবেন তা জানুন।


ধন্যবাদ. আরও একটি প্রশ্ন - কারণ ((...)) ব্যবহার করে তুলনা করা সম্ভব - এই সংস্করণটি ব্যবহার করা কি আরও সাধারণ: যদি ((2> 1)) বা এটি: যদি [[২-জিটি 1]]
মাইকড

আমি ধরে নিব যে if [ 2 -gt 1 ]; …এটি আরও সাধারণ, কারণ আমি এটি প্রায়শই শেল স্ক্রিপ্টগুলিতে দেখতে পাই এবং যতদূর আমি জানি এটি পসিক্স অনুগত।
কিবিবি

আরেকটি বিষয় মনে রাখবেন যে [অভিব্যক্তি] সত্য হয় যদি অভিব্যক্তি শূন্যকে / প্রত্যাবর্তনের মূল্যায়ন করে তবে ((এক্সপ্রেশন)) সত্য যদি অভিব্যক্তিটি শূন্যকে / প্রত্যাবর্তন করে মূল্যায়ন করে।
জো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.