এর পরিবর্তে && ব্যবহার করার কারণ কী; একই লাইনে কমান্ড স্থাপন করতে?


30

ইউনিক্স নয় লিনাক্সের বিশেষজ্ঞ না হয়ে আমি ভাবছি একই লাইনে 2 টি কমান্ড স্ট্রিংয়ের এই 2 পদ্ধতির মধ্যে পার্থক্য কী? আমি এই সরল উদাহরণটিতে আউটপুটে কোনও পার্থক্য দেখছি না

Pete$date ; time
Sun Mar 17 19:37:20 EDT 2013

real    0m0.000s
user    0m0.000s
sys 0m0.000s

Pete$date &&time
Sun Mar 17 19:37:46 EDT 2013

real    0m0.000s
user    0m0.000s
sys 0m0.000s

এটি কোনও সমস্যা ঘটেনি - আমি কেবল কৌতূহলী ..

উত্তর:


43

&&একটি যৌক্তিক 'এবং'। প্রথম যুক্তিটি মূল্যায়ন করা হয়, এবং দ্বিতীয়টি যদি প্রথমটি সত্য দেয় তবেই মূল্যায়ন করা হয়। কারণটি হ'ল "মিথ্যা এবং কিছু" সর্বদা মিথ্যা, সুতরাং এই ক্ষেত্রে দ্বিতীয় যুক্তির মূল্যায়ন করার প্রয়োজন নেই।

সুতরাং &&আপনি ব্যবহার করে নিশ্চিত হয়ে নিন যে প্রথম কমান্ডটি কার্যকর না হয়েছে যদি প্রথমটিতে একটি ত্রুটি জানায় ( trueপ্রস্থান কোড দ্বারা প্রতিনিধিত্ব করা হয় 0, যা বোঝায় যে কোনও ত্রুটি ছিল না)। বিপরীতে, ;উভয় কমান্ড কার্যকর করে, প্রথমটির ফলাফলটি যাই হোক না কেন।

উপসংহার: সাথে কমান্ড শৃঙ্খলা &&করা একটি ভাল অভ্যাস। এর বিপরীতে ;কিছু ভুল হয়ে গেলে পরবর্তী কমান্ডগুলি কার্যকর করা হবে না।


আপনার অর্থ কি তার 0মানে trueবা এর 0অর্থ সত্য - কোনও ত্রুটি আছে?
মাইকেল বাটলার

1
@ মিশেলবাটলার: 0মানে true। আমি একটি ব্যাখ্যা যোগ করেছি।
আজিমুট

26

;

পূর্বের প্রস্থান স্থিতি কী ছিল তা বিবেচনা না করে ক্রমানুসারে আদেশগুলি কার্যকর করে:

# sh -c "exit 0" ; echo "2nd command"
2nd command
# sh -c "exit 1" ; echo "2nd command"
2nd command

&&

লজিকাল এবং

পরবর্তী কমান্ডটি কার্যকর করুন, তবে কেবলমাত্র পূর্ববর্তী কমান্ডটি সফল হলে (প্রস্থান স্থিতিটি ছিল 0):

# sh -c "exit 0" && echo "2nd command"
2nd command
# sh -c "exit 1" && echo "2nd command"
#

||

যৌক্তিক OR

পরবর্তী কমান্ডটি কার্যকর করুন তবে কেবলমাত্র পূর্ববর্তী কমান্ড ব্যর্থ হলে (প্রস্থান স্থিতিটি ছিল না 0 ):

# sh -c "exit 0" || echo "2nd command"
#
# sh -c "exit 1" || echo "2nd command"
2nd command

6
এছাড়াও, sh -c "exit 0"সঙ্গে প্রতিস্থাপিত হতে পারে trueএই উদাহরণ, এবং sh -c "exit 1"সঙ্গে false
ফ্লিম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.