অপারেটর && পরবর্তী কমান্ডটি কার্যকর করে যদি পূর্ববর্তী কমান্ডটির সফল প্রয়োগ হয়, (প্রস্থান প্রস্থান কোড ($?) 0 = যৌক্তিক সত্য)।
আকারে A && B || C
কমান্ড (অথবা শর্ত) একটি মূল্যায়ন করা হয় এবং যদি একজন ফেরৎ সত্য (বিজয়, প্রস্থান কোড 0) তারপর কমান্ড বি মৃত্যুদন্ড কার্যকর করা হয়। যদি একটি ব্যর্থ হয় (এভাবে মিথ্যা প্রত্যাবর্তন হবে - 0 ব্যতীত প্রস্থান কোড) এবং / বা বি ব্যর্থ হয় ( মিথ্যা প্রত্যাবর্তন ) তবে সি আদেশটি কার্যকর করা হবে।
এছাড়াও &&
অপারেটরটি শর্ত চেকগুলিতে একটি AND হিসাবে ব্যবহৃত হয় এবং অপারেটর শর্ত পরীক্ষায় ওআর এর ||
মতো কাজ করে ।
আপনার স্ক্রিপ্টের সাথে আপনি কী করতে চান তার উপর নির্ভর করে ফর্মটি A && B || C
আপনার উদাহরণের মতো শর্ত পরীক্ষার জন্য ব্যবহার করা যেতে পারে বা কমান্ডগুলি শৃঙ্খলাবদ্ধ করতে ব্যবহার করা যেতে পারে এবং যদি পূর্ববর্তী কমান্ডগুলির একটি সফল প্রস্থান কোড 0 থাকে তবে কমান্ডের একটি সিরিজ নিশ্চিত করা যায় ।
এই কেন এটা পছন্দ কমান্ড দেখতে খুবই সাধারণ হল:
do_something && do_something_else_that_depended_on_something
।
উদাহরণস্বরূপ:
apt-get update && apt-get upgrade
যদি আপডেট ব্যর্থ হয় তবে আপগ্রেড কার্যকর করা হয় না, (বাস্তব বিশ্বে বোঝা যায় ...)।
mkdir test && echo "Something" > test/file
অংশটি সফল echo "Something"
হলেই কার্যকর করা হবে mkdir test
এবং অপারেশনটি প্রস্থান কোড 0 নম্বর দিয়েছিল ।
./configure --prefix=/usr && make && sudo make install
সাধারণত একসাথে প্রয়োজনীয় নির্ভরশীল কমান্ডগুলি চেইনে সংকলনের কাজগুলিতে পাওয়া যায়।
আপনি সঙ্গে "চেইন" উপরের বাস্তবায়ন চেষ্টা করুন যদি - তারপর - আর একটি সহজ কাজের জন্য - (ভুল হয়ে যেতে পারে আরো জিনিস এবং এইভাবে আরো কোড লিখতে) আপনি আরো অনেক কিছু কমান্ড এবং চেক করতে হবে।
এছাড়াও, && এবং || এর সাথে জড়িত আদেশগুলি মনে রাখবেন শেল থেকে বাম থেকে ডানে পড়া হয়। পূর্ববর্তী কয়েকটি কমান্ডের সফল আউটপুটটির পরবর্তী ধাপটি নির্ভর করতে আপনার ব্র্যাকেটগুলি সহ কমান্ড এবং কন্ডিশন চেকের গোষ্ঠীগুলির প্রয়োজন হতে পারে। উদাহরণস্বরূপ এটি দেখুন:
root@debian:$ true || true && false;echo $?
1
#read from left to right
#true OR true=true AND false = false = exit code 1=not success
root@debian:$ true || (true && false);echo $?
0
# true OR (true AND false)=true OR false = true = exit code 0 = success
বা বাস্তব জীবনের উদাহরণ:
root@debian:$ a=1;b=1;c=1;[[ $a -eq 1 ]] || [[ $b -eq 1 ]] && [[ $c -eq 2 ]];echo $?
1
#condition $a = true OR condition b = true AND condition $c = false
#=> yields false as read from left to right, thus exit code=1 = not ok
root@debian:$ a=1;b=1;c=1;[[ $a -eq 1 ]] || [[ $b -eq 1 && $c -eq 2 ]];echo $?
0
#vars b and c are checked in a group which returns false,
#condition check of var a returns true, thus true OR false yields true = exit code 0
মনে রাখবেন যে কয়েকটি কমান্ডগুলি কার্যকর হওয়া প্রক্রিয়ার উপর নির্ভর করে বিভিন্ন প্রস্থান কোডগুলি ফেরত দেয় বা তাদের ক্রিয়ের উপর নির্ভর করে বিভিন্ন কোড ফেরত দেয় (উদাহরণস্বরূপ diff
, জিএনইউ কমান্ড , দুটি ফাইল পৃথক হলে 1 প্রদান করে এবং যদি তারা না দেয় তবে 0 দেয় )। এই জাতীয় আদেশগুলি && এবং || তে যত্ন সহকারে চিকিত্সা করা দরকার ।
এছাড়াও কেবল সমস্ত ধাঁধা একসাথে রাখতে ;
অপারেটর ব্যবহার করে কমান্ডের সংমিশ্রণটি মনে করুন । একটি বিন্যাসে সঙ্গে A;B;C
সব কমান্ড কোন ব্যাপার কি কমান্ডের প্রস্থান কোড ছিল সিরিজে মৃত্যুদন্ড কার্যকর করা হবে A
এবং B
।