bash - শেল কমান্ডের "&&" কী উদ্দেশ্য?



shell command-line (6)

কমান্ড লাইন - এর উদ্দেশ্য কি?

শেল ইন, যখন আপনি দেখতে

$ command one && command two

প্রথম কমান্ডটি সফল হলে শুধুমাত্র && অনুসরণ করে এমন কমান্ডটি চালানো হয়। এটি পজিক্স শেলগুলির নির্বোধ, এবং কেবল বাশে পাওয়া যায় না।

এটি প্রথম ব্যর্থ হলে দ্বিতীয় প্রক্রিয়া চলমান আটকাতে ইচ্ছুক।

প্রক্রিয়াগুলি সত্যের জন্য 0 ফেরত, মিথ্যা জন্য অন্যান্য ইতিবাচক সংখ্যা

প্রোগ্রাম exiting একটি signal ফেরত। যদি তারা সফলভাবে প্রস্থান না করে তবে 0 তারা ফেরত দিতে হবে, না হলে তারা শূন্য থেকে বেশি। এই প্রসেসের মধ্যে যোগাযোগ সীমিত পরিমাণ অনুমতি দেয়।

& && AND_IF শেল ব্যাকরণে AND_IF হিসাবে উল্লেখ করা হয়, যা কমান্ডগুলির একটি and_or তালিকার অংশ, যা অন্তর্ভুক্ত রয়েছে || যা একই semantics সঙ্গে একটি OR_IF হয়।

ব্যাকরণ চিহ্ন:

%token  AND_IF    OR_IF    DSEMI
/*      '&&'      '||'     ';;'    */

ব্যাকরণ:

and_or           :                         pipeline
                 | and_or AND_IF linebreak pipeline
                 | and_or OR_IF  linebreak pipeline

উভয় অপারেটর সমান অগ্রাধিকার আছে এবং বাম থেকে ডান মূল্যায়ন করা হয় (তারা সহযোগী বামে) উদাহরণস্বরূপ, নিম্নলিখিত:

$ false && echo foo || echo bar
$ true || echo foo && echo bar

উভয় bar শুধুমাত্র bar

  1. প্রথম ক্ষেত্রে, মিথ্যা একটি কমান্ড যা 1 এর অবস্থা ছাড়িয়ে যায়

    $ false
    $ echo $?
    1

    echo foo চালানো হয় না মানে (অর্থাত্, শর্টকাটকুটিং echo foo )। তারপর কমান্ড echo bar হয়।

  2. দ্বিতীয় ক্ষেত্রে, সত্য 0 একটি কোড দিয়ে exits

    $ true
    $ echo $?
    0

    এবং তাই echo foo নির্বাহ করা হয় না, তাহলে echo bar কার্যকর হয়।

https://code.i-harness.com

যতদূর আমি জানি, কমান্ডটি ব্যবহার করে & পটভূমিতে এটি চালানোর জন্য।

উদাহরণ & ব্যবহার: tar -czf file.tar.gz dirname &

কিন্তু কিভাবে সম্পর্কে && ? (এই উদাহরণটি দেখুন: https://serverfault.com/questions/215179/centos-100-disk-full-how-to-remove-log-files-history-etc#answer-215188 )


'&&' জন্য একটি সাধারণ প্রচলিত ব্যবহার autotools সহ সফ্টওয়্যার কম্পাইল করা হয়। উদাহরণ স্বরূপ:

./configure --prefix=/usr && make && sudo make install

কনফিগারেশন সফল হয়ে গেলে, কম্পাইল করতে চালানো হয় এবং যদি এটি সফল হয় তবে প্রোগ্রামটি ইনস্টল করতে রুট হিসাবে চালান। আমি যখন এটি বেশিরভাগ নিশ্চিত করতে পারি যে জিনিসগুলি কাজ করবে, এবং এটি আমাকে অন্যান্য গুরুত্বপূর্ণ কাজগুলি করতে দেয় যেমন স্ট্যাকওভারফ্লোটি অগ্রগতির 'নজরদারি' নয়।

কখনও কখনও আমি সত্যিই বাহিত দূরে ...

tar xf package.tar.gz && ( cd package; ./configure && make && sudo make install ) && rm package -rf

উদাহরণস্বরূপ, যখন আমি স্ক্র্যাচ বক্স থেকে একটি লিনাক্স তৈরি করি।


উপরন্তু, আপনি আছে || যা যৌক্তিক বা, এবং এছাড়াও ; যা শুধু একটি বিভাজক যা পূর্বে যত্ন কমান্ড কি যত্ন না।

$ false || echo "Oops, fail"
Oops, fail

$ true || echo "Will not be printed"
$  

$ true && echo "Things went well"
Things went well

$ false && echo "Will not be printed"
$

$ false ; echo "This will always run"
This will always run

এই সম্পর্কে কিছু বিস্তারিত এখানে পাওয়া যাবে বাশ ম্যানুয়াল কমান্ডের তালিকা


প্রথম বিবৃতি সফলভাবে শেষ হলে দ্বিতীয় বিবৃতি কার্যকর করা হয়। যদি একটি বিবৃতি লেগেছে:

 if (1 == 1 && 2 == 2)
  echo "test;"

তার প্রথম চেষ্টা যদি = 1 = 1, যদি এটি সত্য হয় তবে এটি 2 == 2 টি চেক করে


&& স্ট্রিং একসঙ্গে কমান্ড। পূর্ববর্তী সফলগুলি শুধুমাত্র সফল সঞ্চালন করলেই কার্যকর হয়।

একইভাবে, || পূর্বে ব্যর্থ ব্যর্থ হলে ক্রমাগত কমান্ড চালানোর অনুমতি দেবে।

বাশ শেল প্রোগ্রামিং দেখুন


command_1 && command_2 : কমান্ড_1 সফলভাবে কার্যকর হলে শুধুমাত্র কমান্ড_2 চালান।

command_1 || command_2 command_1 || command_2 : command_1 || command_2 কার্যকর হলে শুধুমাত্র কমান্ড_1 সফলভাবে কার্যকর হয় না।

কীভাবে শর্ত থাকে যে কীভাবে 'if' শর্তটি মূলধারার প্রোগ্রামিং ভাষাতে কার্যকর হয়, যেমন if (condition_1 && condition_2){...} শর্ত_2 যদি শর্তটি false এবং if (condition_1 || condition_2){...} condition_2 যদি condition_1 true হয় তবে বাদ দেওয়া হবে। দেখুন, এটি কোডিংয়ের জন্য আপনি একই কৌশল ব্যবহার করছেন :)





syntax