দ্বৈত বর্গাকার বন্ধনীগুলি [[]] বাশ-এ একক বর্গাকার বন্ধনীগুলির চেয়ে বেশি পছন্দনীয়?


573

একজন সহকর্মী সম্প্রতি একটি কোড পর্যালোচনায় দাবি করেছিলেন যে এর মতো [[ ]]নির্মাণে কনস্ট্রাক্টকে অগ্রাধিকার দেওয়া [ ]হয়

if [ "`id -nu`" = "$someuser" ] ; then 
     echo "I love you madly, $someuser"
fi

তিনি কোনও যুক্তি সরবরাহ করতে পারেন নি। একটি আছে?


19
নমনীয় হতে, কখনও কখনও নিজের জন্য তার গভীর ব্যাখ্যা :) হিসাবে প্রয়োজন ছাড়া একটা উপদেশ শুনতে করার অনুমতি দেয় [[তা দিয়ে কোড ভাল এবং স্পষ্ট, কিন্তু মনে পড়ে সেদিনের কথা যখন আপনি বন্দর হবে ডিফল্ট শেল সঙ্গে ব্যবস্থা যা নয় আপনার scriptworks bashবা ksh, ইত্যাদি [কৃপণ, জটিল, কিন্তু যে AK-47কোনও পরিস্থিতিতে যেমন কাজ করে ।
দাড়কাক

178
@ আরোক আপনি গভীর পরামর্শ ব্যতিরেকে কোনও পরামর্শ শুনতে পারবেন, নিশ্চিত। তবে আপনি যখন কোনও ব্যাখ্যাটির জন্য অনুরোধ করেন এবং তা না পান, তবে এটি সাধারণত একটি লাল পতাকা। "বিশ্বাস করুন, তবে যাচাই করুন" এবং এগুলি।
জোসিপ রডিন

6
এছাড়াও দেখুন: ব্যাশ অপারেটার মধ্যে পার্থক্য বনাম (বনাম (([[বনাম [কি? ইউনিক্স ও লিনাক্স দঃপূঃ উপর।
codeforester

1
@ কথায় কথায় কথায় কথায় কথায় কথায় কথায় কথায় কথায় কথায় কুল তাড়াহুড়ো করে ফেলেছেন "আপনাকে যা বলা হয়েছে তা করুন এবং প্রশ্ন জিজ্ঞাসা করবেন না"
গ্লাইফ

@ আরোক এটি কোনও অর্থ দেয় না।
রাকিব

উত্তর:


606

[[কম চমক আছে এবং ব্যবহার করা সাধারণত নিরাপদ। তবে এটি পোর্টেবল নয় - পসিক্স এটি কী করে তা নির্দিষ্ট করে না এবং কেবল কয়েকটি শাঁস এটি সমর্থন করে (ব্যাশের পাশে, আমি শুনেছি কেএসও এটি সমর্থন করে)। উদাহরণস্বরূপ, আপনি করতে পারেন

[[ -e $b ]]

একটি ফাইল বিদ্যমান কিনা তা পরীক্ষা করতে। তবে এর সাথে [আপনাকে উদ্ধৃতি দিতে হবে $b, কারণ এটি যুক্তিটি বিভক্ত করে এবং "a*"( যেমন [[আক্ষরিকভাবে এটি গ্রহণ করে) এর মতো জিনিসগুলি প্রসারিত করে । এটি কীভাবে [কোনও বাহ্যিক প্রোগ্রাম হতে পারে এবং এটি অন্যান্য যুক্তিযুক্ত প্রোগ্রামের মতোই সাধারণত তার যুক্তিটি গ্রহণ করে (যদিও এটি একটি বিল্টিনও হতে পারে তবে এটি এখনও এই বিশেষ পরিচালনা করে না)।

[[=~অপারেটরের সাথে নিয়মিত এক্সপ্রেশন ম্যাচের মতো সি-জাতীয় ভাষায় পরিচিত যেমন তাদের আরও কিছু দুর্দান্ত বৈশিষ্ট্য রয়েছে । এটি সম্পর্কে একটি ভাল পৃষ্ঠা এখানে: পরীক্ষার মধ্যে পার্থক্য কী [এবং [[? এবং বাশ টেস্ট


21
ব্যাশটি আজকাল সর্বত্র রয়েছে বলে বিবেচনা করে আমার মনে হয় এটি খুব জঘন্য পোর্টেবল। ব্যস্তবক্স প্ল্যাটফর্মগুলিতে আমার পক্ষে একমাত্র সাধারণ ব্যতিক্রম - তবে সম্ভবত এটির জন্য যে হার্ডওয়ারটি চালু রয়েছে তা দেওয়া আপনি সম্ভবত এর জন্য একটি বিশেষ প্রচেষ্টা করতে চাইবেন।
বন্দুক

14
@ গুনস: আসলেই। আমি পরামর্শ দেব যে আপনার দ্বিতীয় বাক্যটি আপনার প্রথমটিকে অস্বীকার করে; আপনি যদি সামগ্রিকভাবে সফ্টওয়্যার বিকাশকে বিবেচনা করেন তবে "ব্যাশ সর্বত্র রয়েছে" এবং "ব্যতিক্রম ব্যস্তবক্স প্ল্যাটফর্মগুলি" সম্পূর্ণ বেমানান। এম্বেডড ডেভলপমেন্টের জন্য ব্যস্তবক্স ব্যাপক।
হালকা ঘোড়দৌড়

11
@ গুনস: এমনকি যদি আমার বাক্সে বাশ ইনস্টল করা থাকে তবে এটি স্ক্রিপ্টটি চালাচ্ছে না (ফ্রিবিএসডি এবং উবুন্টুর মান অনুসারে আমার কিছুটা ড্যাশ বৈকল্পিকের সাথে / বিন / শ সিমলিংক থাকতে পারে)। ব্যাসিবক্সের সাথে অতিরিক্ত অদ্ভুততা রয়েছে: আজকাল স্ট্যান্ডার্ড সংকলনের বিকল্পগুলির সাথে এটি পার্স করে [[ ]]তবে এর অর্থ হিসাবে অর্থ ব্যাখ্যা করে [ ]
dubiousjim

59
@ সন্দেহভাজন জিম: আপনি যদি কেবলমাত্র ব্যাশ-নির্মাণ (যদি এর মতো) ব্যবহার করেন তবে আপনার #! / বিন / বাশ থাকা উচিত, # নয়!
নিক মাত্তিও

16
এ কারণেই আমি আমার স্ক্রিপ্টগুলি ব্যবহার করি #!/bin/shতবে তারপরে #!/bin/bashআমি কিছু BASH নির্দিষ্ট বৈশিষ্ট্যের উপর নির্ভর করার সাথে সাথে এগুলি ব্যবহার করতে স্যুইচ করি , বোঝাতে এটি আর বোর্ন শেল বহনযোগ্য নয়।
এন্থনি

151

আচরণের পার্থক্য

4.3.11 বাশে কিছু পার্থক্য:

  • পসিক্স বনাম বাশ এক্সটেনশান:

  • নিয়মিত কমান্ড বনাম যাদু

    • [ একটি অদ্ভুত নাম সহ একটি নিয়মিত আদেশ।

      ]এটি কেবলমাত্র একটি যুক্তিই হ'ল [আরও যুক্তি ব্যবহার করা থেকে বাধা দেয়।

      উবুন্টু 16,04 আসলে এ জন্য একটি এক্সিকিউটেবল হয়েছে /usr/bin/[কর্তৃক প্রদত্ত coreutils কিন্তু ব্যাশ বিল্ট-ইন সংস্করণটি অগ্রাধিকার লাগে।

      বাশ যেভাবে কমান্ডটি পার্স করে তাতে কিছুই পরিবর্তন হয় না।

      বিশেষত, <পুনঃনির্দেশ, &&এবং ||একাধিক কমান্ডকে ( )একত্রিত করা , সাবস্কেল জেনারেট করা অবধি না জেনায় \এবং শব্দ প্রসারণটি যথারীতি ঘটে।

    • [[ X ]]এটি একটি একক নির্মাণ যা Xযাদুতে পার্স করা যায়। <, &&, ||এবং ()বিশেষভাবে চিকিত্সা করা হয়, এবং শব্দ বিভাজন নিয়ম ভিন্ন।

      মত =এবং আরও পার্থক্য আছে =~

      বাশেসে: [একটি অন্তর্নির্মিত কমান্ড, এবং [[এটি একটি কীওয়ার্ড: /ubuntu/445749/whats-the-differences-between- Shell - builtin- and- shell - keyword

  • <

  • && এবং ||

    • [[ a = a && b = b ]]: সত্য, যৌক্তিক এবং
    • [ a = a && b = b ]: সিনট্যাক্স ত্রুটি, &&একটি এবং কমান্ড বিভাজক হিসাবে পার্স করা হয়েছেcmd1 && cmd2
    • [ a = a -a b = b ]সমতুল্য, তবে POSIX³ দ্বারা অবচয় ³
    • [ a = a ] && [ b = b ]: পসিক্স এবং নির্ভরযোগ্য সমতুল্য
  • (

    • [[ (a = a || a = b) && a = b ]]: মিথ্যা
    • [ ( a = a ) ]: সিনট্যাক্স ত্রুটি, ()সাবসেল হিসাবে ব্যাখ্যা করা হয়
    • [ \( a = a -o a = b \) -a a = b ]সমতুল্য, তবে ()পসিক্স দ্বারা হ্রাস করা হয়
    • { [ a = a ] || [ a = b ]; } && [ a = b ] পসিক্স সমতুল্য ⁵
  • শব্দের বিভাজন এবং ফাইলের নাম উত্পাদন প্রসারণ (স্প্লিট + গ্লোব)

    • x='a b'; [[ $x = 'a b' ]]: সত্য, উদ্ধৃতিগুলির প্রয়োজন নেই
    • x='a b'; [ $x = 'a b' ]: সিনট্যাক্স ত্রুটি, প্রসারিত হয় [ a b = 'a b' ]
    • x='*'; [ $x = 'a b' ]: বর্তমান ডিরেক্টরিতে একাধিক ফাইল থাকলে সিনট্যাক্স ত্রুটি।
    • x='a b'; [ "$x" = 'a b' ]: পসিক্স সমতুল্য
  • =

    • [[ ab = a? ]]: সত্য, কারণ এটি প্যাটার্ন ম্যাচিং করে ( * ? [ম্যাজিক হয়)। বর্তমান ডিরেক্টরিতে ফাইলগুলিতে গ্লোব প্রসারিত হয় না।
    • [ ab = a? ]: a?গ্লোব প্রসারিত। সুতরাং বর্তমান ডিরেক্টরিতে থাকা ফাইলগুলির উপর নির্ভর করে সত্য বা মিথ্যা হতে পারে।
    • [ ab = a\? ]: মিথ্যা, গ্লোব সম্প্রসারণ নয়
    • =এবং ==উভয় একই [এবং [[কিন্তু ==একটি ব্যাশ এক্সটেনশান।
    • case ab in (a?) echo match; esac: পসিক্স সমতুল্য
    • [[ ab =~ 'ab?' ]]: মিথ্যা⁴, দিয়ে যাদু হারায় ''
    • [[ ab? =~ 'ab?' ]]: সত্য
  • =~

    • [[ ab =~ ab? ]]: সত্য, POSIX প্রসারিত নিয়মিত অভিব্যক্তি ম্যাচ, ?গ্লোব বিস্তৃত হয় না
    • [ a =~ a ]: বাক্যগঠন ত্রুটি. বাশের সমতুল্য নয়।
    • printf 'ab\n' | grep -Eq 'ab?': পসিক্স সমতুল্য (শুধুমাত্র একক লাইন ডেটা)
    • awk 'BEGIN{exit !(ARGV[1] ~ ARGV[2])}' ab 'ab?': পসিক্স সমতুল্য।

প্রস্তাবনা : সর্বদা ব্যবহার []

[[ ]]আমি দেখেছি প্রতিটি নির্মাণের জন্য পসিক্স সমতুল্য রয়েছে ।

আপনি যদি ব্যবহার করেন [[ ]]:

  • বহনযোগ্যতা হারাতে
  • পাঠককে অন্য ব্যাশ এক্সটেনশনের জটিলতা শিখতে বাধ্য করুন। [একটি অদ্ভুত নাম সহ কেবল একটি নিয়মিত আদেশ, কোনও বিশেষ শব্দার্থিক জড়িত নয়।

Orn [[...]]কর্ন শেলের সমতুল্য নির্মাণ থেকে অনুপ্রাণিত

² তবে কিছু মান aবা b(যেমন +বা index) এর জন্য ব্যর্থ হয় এবং সংখ্যাসূচক তুলনা করে aএবং যদি bদশমিক পূর্ণসংখ্যার মতো দেখতে লাগে । expr "x$a" '<' "x$b"উভয় কাছাকাছি কাজ করে।

³ এবং কিছু মানের জন্য ব্যর্থ হয় aবা bমত !বা (

B ব্যাশ ৩.২ এবং তারপরে এবং ব্যাশ ৩.১ এর সাথে সামঞ্জস্যতা সরবরাহ করা সক্ষম করা নেই (এর মতো BASH_COMPAT=3.1)

⁵ যদিও গোষ্ঠীবদ্ধ (এখানে দিয়ে {...;}কমান্ড দল পরিবর্তে (...)যা অপ্রয়োজনীয় subshell চালানো হবে) না প্রয়োজনীয় ||এবং &&শেল অপারেটার (যেমন বিরোধিতা ||এবং && [[...]]অপারেটরদের বা -o/ -a [অপারেটরদের) সমান প্রাধান্য আছে। সুতরাং [ a = a ] || [ a = b ] && [ a = b ]সমতুল্য হবে।


4
ভাল ব্যাখ্যা। আমি [একই কারণে ব্যবহার করি ।
গর্ডন

2
বাশেয় :) এ। পসিক্সের সাথে আটকে থাকার পার্থক্যের কারণ এবং কারণ সম্পর্কে সুন্দর ব্যাখ্যা।
জোনাথন কোমার

56

[[ ]]আরও বৈশিষ্ট্য রয়েছে - আমি পরামর্শ দিচ্ছি যে আপনি আরও তথ্যের জন্য উন্নত বাশ স্ক্রিপ্টিং গাইডটি একবার দেখুন, বিশেষত অধ্যায়। টেস্টের বর্ধিত পরীক্ষা কমান্ড বিভাগটি ।

ঘটনাচক্রে, গাইড নোট হিসাবে, [[ ]]ksh88 (কর্ন শেলের 1988 সংস্করণ) এ প্রবর্তিত হয়েছিল।


5
এটি কোনও বাশিজম থেকে দূরে, এটি প্রথম কর্ন শেলের মধ্যে প্রবর্তিত হয়েছিল।
হেন্ক ল্যাঙ্গভেল্ড

6
@ থমাস, ABS আসলে অনেকগুলি চেনাশোনাতে একটি খুব দুর্বল রেফারেন্স হিসাবে বিবেচিত হয়; যদিও এর যথাযথ তথ্য রয়েছে, তবুও এর উদাহরণগুলিতে খারাপ অভ্যাসগুলি প্রদর্শন করা এড়াতে খুব সামান্য যত্ন নেওয়ার প্রবণতা রয়েছে এবং এর জীবনকাল অবিচ্ছিন্নভাবে কাটিয়েছে।
চার্লস ডাফি

@ চার্লস ডফি আপনার মন্তব্যের জন্য ধন্যবাদ, আপনি একটি ভাল বিকল্পের নাম দিতে পারেন? আমি শেল স্ক্রিপ্টিংয়ের বিশেষজ্ঞ নই, আমি এমন গাইড খুঁজছি যা আমি প্রতি অর্ধ বছরে একবার স্ক্রিপ্ট লেখার জন্য পরামর্শ নিতে পারি।
থমাস

9
@ থমাস, উওলিশ বাশফাক এবং সম্পর্কিত উইকি আমি ব্যবহার করি; এগুলি ফ্রিনোড # ব্যাশ চ্যানেলের ডেনিজেনদের দ্বারা সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হয় (যারা মাঝে মাঝে কাঁচাচোরা হলেও সঠিকতার বিষয়ে গভীরভাবে যত্নবান হন)। এই প্রশ্নটির সাথে সরাসরি প্রাসঙ্গিক পৃষ্ঠা বাশফ্যাঙ্ক # 31, mywiki.wooledge.org/BashFAQ/031 , পৃষ্ঠা।
চার্লস ডাফি

13

থেকে কোন comparator, পরীক্ষা, বন্ধনী, বা ডবল বন্ধনী, দ্রুততম হয়? ( http://bashcurescancer.com )

ডাবল বন্ধনী একটি "যৌগিক কমান্ড" যেখানে পরীক্ষা হিসাবে এবং একক বন্ধনী শেল বিল্ট-ইনগুলি হয় (এবং বাস্তবে একই কমান্ড হয়)। সুতরাং, একক বন্ধনী এবং ডাবল বন্ধনী বিভিন্ন কোড কার্যকর করে।

পৃথক এবং বাহ্যিক কমান্ড হিসাবে উপস্থিত থাকার কারণে পরীক্ষা এবং একক বন্ধনী সর্বাধিক বহনযোগ্য। তবে, আপনি যদি BASH এর কোনও দূরবর্তী আধুনিক সংস্করণ ব্যবহার করেন তবে ডাবল বন্ধনী সমর্থিত।


7
শেল স্ক্রিপ্টগুলির দ্রুততম আবেশের কী আছে ? আমি এটি সবচেয়ে বহনযোগ্য চাই এবং উন্নতি যেটা [[নিয়ে আসতে পারে তার কম যত্ন নিতে পারিনি । তবে তারপরে, আমি একটি পুরানো বিদ্যালয়ের পুরাতন দূরত্ব :-)
জেনস

1
আমি মনে করি অনেকগুলি শেল বিল্টিন সংস্করণগুলি প্রমাণ করে [এবং testযদিও বাহ্যিক সংস্করণগুলিও বিদ্যমান exist
সন্দেহজনক জিম

4
@ জেনার্স সাধারণভাবে আমি সম্মত: স্ক্রিপ্টগুলির পুরো উদ্দেশ্যটি (ছিল?) বহনযোগ্যতা (অন্যথায়, আমরা কোড ও সংকলন করতাম, স্ক্রিপ্ট নয়) ... যে দুটি ব্যতিক্রম আমি ভাবতে পারি তা হ'ল: (1) ট্যাব সমাপ্তি (যেখানে) সমাপ্তি স্ক্রিপ্টগুলি প্রচুর শর্তাধীন যুক্তি দিয়ে সত্যিই দীর্ঘতর হতে পারে); এবং (2) সুপার-প্রম্পট ( PS1=...crazy stuff...এবং / অথবা $PROMPT_COMMAND); এগুলির জন্য, আমি স্ক্রিপ্টটির প্রয়োগে কোনও বোধগম্য বিলম্ব চাই না ।
মাইকেল 25

1
দ্রুততম সঙ্গে কিছু আবেশ সহজ স্টাইল। অন্য সবগুলি সমান হওয়ায়, আপনার ডিফল্ট শৈলীতে আরও দক্ষ কোড কনস্ট্রাক্ট কেন যুক্ত করবেন না, বিশেষত যদি সেই কনস্ট্রাক্ট আরও পাঠযোগ্যতার প্রস্তাব দেয়? বহনযোগ্যতা হিসাবে, ব্যাশ উপযুক্ত যেগুলি বেশ কয়েকটি কাজের জন্য উপযুক্ত তা অন্তর্নিহিত অ-বহনযোগ্য are উদাহরণস্বরূপ, apt-get updateশেষ দৌড়াতে আমার X ঘন্টাের বেশি হলে চালানো দরকার । কোডের সীমাবদ্ধতার ইতিমধ্যে দীর্ঘ-দীর্ঘ তালিকা থেকে পোর্টেবলিটি ছেড়ে দিতে পারলে এটি একটি দুর্দান্ত স্বস্তি।
রন বুর্ক

5

আপনি যদি গুগলের স্টাইল গাইডটি অনুসরণ করে থাকেন :

পরীক্ষা, [এবং[[

[[ ... ]]কোনও পাথের নাম সম্প্রসারণ বা শব্দের বিভাজন এর মধ্যে ঘটে বলে [[এবং ত্রুটিগুলি হ্রাস করে ]]এবং [[ ... ]]যেখানে নিয়মিত এক্সপ্রেশন মেলানোর অনুমতি দেয় [ ... ]

# This ensures the string on the left is made up of characters in the
# alnum character class followed by the string name.
# Note that the RHS should not be quoted here.
# For the gory details, see
# E14 at https://tiswww.case.edu/php/chet/bash/FAQ
if [[ "filename" =~ ^[[:alnum:]]+name ]]; then
  echo "Match"
fi

# This matches the exact pattern "f*" (Does not match in this case)
if [[ "filename" == "f*" ]]; then
  echo "Match"
fi

# This gives a "too many arguments" error as f* is expanded to the
# contents of the current directory
if [ "filename" == f* ]; then
  echo "Match"
fi

1
গুগল লিখেছিল " কোনও পথের নাম প্রসারিত হয় ... ঘটে না " তবুও [[ -d ~ ]]সত্যটি ফিরে আসে (যা বোঝায় ~যে এতে প্রসারিত হয়েছিল /home/user)। আমি মনে করি এটি লেখার ক্ষেত্রে গুগলের আরও সুনির্দিষ্ট হওয়া উচিত ছিল।
জেমস থমাসমুন 1979

2

একটি সাধারণ পরিস্থিতি যেখানে আপনি ব্যবহার করতে পারবেন না [[তা একটি অটোটুল কনফিগার.এ্যাক স্ক্রিপ্টে রয়েছে, বন্ধনীগুলির একটি বিশেষ এবং আলাদা অর্থ রয়েছে, সুতরাং আপনাকে বা testপরিবর্তে ব্যবহার করতে হবে - পরীক্ষাটি নোট করুন এবং একই প্রোগ্রাম।[[[[


2
প্রদত্ত অটোটুলগুলি কোনও পসিক্স শেল নয়, আপনি কেন কখনও পসিক্স [শেল ফাংশন হিসাবে সংজ্ঞায়িত হওয়ার প্রত্যাশা করবেন?
গর্ডন

কারণ অটোকনফ স্ক্রিপ্টটি শেল স্ক্রিপ্টের মতো দেখাচ্ছে এবং এটি একটি শেল স্ক্রিপ্ট তৈরি করে এবং বেশিরভাগ শেল কমান্ডগুলি এর অভ্যন্তরে কাজ করে।
vy32

-1

[[]] ডাবল বন্ধনীগুলি সানোস-এর নির্দিষ্ট সংস্করণের অধীনে অসমর্থিত এবং ফাংশন ঘোষণার অভ্যন্তরে সম্পূর্ণরূপে অসমর্থিত: জিএনইউ ব্যাশ, সংস্করণ 2.02.0 (1) -রেলিজ (স্পার্ক-সান-সোলারিস 2.6)


1
খুব সত্য, এবং মোটেই অসম্পূর্ণ নয়। পুরানো সংস্করণ জুড়ে ব্যাশ বহনযোগ্যতা অবশ্যই বিবেচনা করা উচিত। লোকেরা বলে যে "বাশ সর্বব্যাপী এবং বহনযোগ্য, সম্ভবত ব্যতীত (এখানে এসোটেরিক ওএস sertোকান) " - তবে আমার অভিজ্ঞতায় সোলারিস এমন একটি প্ল্যাটফর্ম যেখানে পোর্টেবিলিটির প্রতি বিশেষ মনোযোগ দিতে হবে: কেবলমাত্র কোনও পুরানো বাশ সংস্করণ বিবেচনা করার জন্য নয় আরও নতুন ওএস, ইস্যু / বাগ ডাব্লু / অ্যারে, ফাংশন, ইত্যাদি; তবে এমনকি ইউটিলিটিগুলি (স্ক্রিপ্টগুলিতে ব্যবহৃত) যেমন ট্র, সেড, অ্যাজক, টারের সোলারিতে অদ্ভুততা এবং অদ্ভুততা রয়েছে যা আপনাকে প্রায় কাজ করতে হবে।
মাইকেল 25

2
আপনি ঠিক বলেছেন ... সোলারিসে পসিক্স নন এমন অনেকগুলি ইউটিলিটিস, কেবল "ডিএফ" আউটপুট এবং যুক্তিগুলি দেখুন ... লজ্জাজনক আশা করি এটি অল্প অল্প অল্প অদৃশ্য হয়ে যাবে (কানাডা বাদে)।
স্ক্যাভেন্জার

7
সোলারিস ২.6 সিরিয়াসলি? এটি 1997 সালে প্রকাশিত হয়েছিল এবং 2006 সালে সমর্থন শেষ হয়েছিল I আমার ধারণা আপনি এখনও যদি এটি ব্যবহার করেন তবে আপনার অন্যান্য সমস্যা আছে! ঘটনাচক্রে এটি ব্যাশ v2.02 ব্যবহার করেছে যা ডাবল বন্ধনী প্রবর্তন করেছিল তাই এটি পুরানো কিছুতেও কাজ করা উচিত। 2005 এর সোলারিস 10 ব্যাশ 3.2.51 এবং সোলারিস 11 ব্যাশ ব্যবহার করেছেন 4.1.11।
পিটারহ

1
স্ক্রিপ্ট বহনযোগ্যতা। লিনাক্স সিস্টেমে সাধারণত প্রতিটি সরঞ্জামের কেবল সংস্করণ থাকে এবং এটি হ'ল জিএনইউ সংস্করণ। সোলারিসে আপনার সাধারণত একটি সোলারিস-নেটিভ সংস্করণ বা জিএনইউ সংস্করণ (সোলারিস টার বনাম জিএনইউ ট্যারে বলুন) এর মধ্যে একটি পছন্দ থাকে। আপনি যদি জিএনইউ নির্দিষ্ট এক্সটেনশনের উপর নির্ভর করেন তবে আপনার স্ক্রিপ্টে এটি পোর্টেবল হওয়ার জন্য আপনাকে অবশ্যই এটি উল্লেখ করতে হবে। সোলারিসে আপনি "জি" এর উপসর্গ রেখে এটি করেন, যেমন আপনি জিএনইউ গ্রেপ চান তবে `ggrep`।
পিটারহ

-2

সংক্ষেপে, [[আরও ভাল কারণ এটি অন্য প্রক্রিয়াটিকে কাঁটাচামচ করে না। কোনও বন্ধনী বা একটি একক বন্ধনী ডাবল বন্ধনী থেকে ধীর নয় কারণ এটি অন্য প্রক্রিয়াটিকে কাঁটাচামচ করে।


8
টেস্ট এবং [বাশ একই বিল্টিন কমান্ডের নাম। type [এটি দেখতে চেষ্টা করুন ।
এবি

1
@alberge, যে সত্য, কিন্তু [[, থেকে স্বতন্ত্র হিসাবে [, সিনট্যাক্স ব্যাশ কম্যান্ড-লাইন ব্যাখ্যাকারী ব্যাখ্যা নেই। ব্যাশে, টাইপ করার চেষ্টা করুন type [[। unix4linux সঠিক যে ক্লাসিক বোর্ন-শেল [পরীক্ষাগুলি সত্যের মান নির্ধারণের জন্য একটি নতুন প্রক্রিয়া বন্ধ করে দেয়, [[সিনট্যাক্স (bsh, zsh ইত্যাদির দ্বারা ksh থেকে ধার করা) তা দেয় না।
টিম গিলবার্ট

2
@ টিম, আমি নিশ্চিত নই যে আপনি কোন বোর্ন শেলটির বিষয়ে কথা বলছেন, তবে [বাশের পাশাপাশি ড্যাশ ( /bin/shসমস্ত দেবিয়ান-উত্পন্ন লিনাক্স বিতরণে) এর অন্তর্নির্মিত ।
এবি

1
ওহ, আমি আপনাকে বোঝাতে চাইছি, এটি সত্য। আমি পুরানো সোলারিস বা এইচপি / ইউএক্স সিস্টেমগুলিতে, বলুন / বিন / এস এর মতো কিছু নিয়ে ভাবছিলাম, তবে অবশ্যই যদি আপনি তাদের ব্যবহার করেন না তবে [[হয় না তবে] আপনার সাথে সামঞ্জস্য করার প্রয়োজন হয়।
টিম গিলবার্ট

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