&& বা || ব্যবহার করার পক্ষে কি কি? বনাম যদি / এলিফ / অন্য কিছু?


0

ব্যাশে, আমি একটি পরীক্ষার শর্তটি && এবং / অথবা || ব্যবহার করতে পারি পরিবর্তে একটি if / elif / অন্য ব্লক।

প্রযোজ্য হলে, আমি && এবং / অথবা || ব্যবহারের প্রবণতা ব্যবহার করি বরং একটি ব্লক তৈরির চেয়ে। একটির উপর অন্য নির্মাণের জন্য কি বাস্তব-বিশ্বের সুবিধা রয়েছে?

নিম্নলিখিত উদাহরণগুলি বিবেচনা করুন:

1)

[[ -f /shared_disk/backups/daily.tar.bz2 ]] && echo "the coast is clear" || echo "run the dump"

2)

if [[ -f /shared_disk/backups/daily.tar.bz2 ]]; then
    echo "the coast is clear"
else
    echo "run the dump"
fi


এছাড়াও সম্পর্কিত: 'যদি' প্রয়োজন হয় না?
স্কট

উত্তর:


5

আপনি যে দুটি ফর্ম উপস্থাপন করছেন তা ঠিক সমান নয়।

ফর্ম ইন: A && B || C, Cযদি পারেন মৃত্যুদন্ড কার্যকর করা হবে Aবা Bমিথ্যা নির্ণয় করা।

উদাহরণ স্বরূপ:

$ true && true || echo C
$ true && false || echo C
C
$

এটি if-then-elseফর্মের উপরে ফর্মটির একটি আসল-জগতের সুবিধা দেয় A && B || Cএবং এটি স্পষ্টতা। if-then-elseফর্মটি কী করছে তা স্পষ্ট , তবে ফর্মটি কী করছে তা বোঝার জন্য আপনাকে মূল্যায়নের নিয়মগুলি বুঝতে হবে A && B || C

তবে এটি ব্যবহার করার জন্য A && Bবা এটি প্রায়শই উপকারী হতে পারে A || B। এটি পরিষ্কার এবং সহজ কমান্ডগুলি চালিত হওয়ার সময় এটি কার্যকর হতে পারে। কখনও কখনও তিনটির পরিবর্তে একটি লাইন পরিষ্কার হয়, বিশেষত যখন আপনি প্রচুর পরিমাণে কোড নেওয়ার চেষ্টা করছেন।


4
পরিবর্তে আইএমও ব্যবহার && ||করার ক্ষেত্রে সবচেয়ে বিভ্রান্তিকর বিষয় if then elseহ'ল এটি তত্কালীন কমান্ড এবং অন্য জাতীয় কমান্ড উভয়ই চালাতে পারে (যদি প্রথম কমান্ড সফল হয় এবং দ্বিতীয় ব্যর্থ হয়)। আপনি কোনও echoকমান্ড সত্যই ব্যর্থ হওয়ার প্রত্যাশা করবেন না , তবে এটি ঘটতে পারে এবং যদি তা কখনও ঘটে তবে তা সত্যিই বিভ্রান্ত হবে। একটি সঠিক if then elseবিবৃতি পারেন রান thenকমান্ড (গুলি) বা elseআদেশ, কখনো উভয়।
গর্ডন ডেভিসন

@ গর্ডন ডেভিসন: আপনি উত্তর হিসাবে পোস্ট করেন না কেন?
স্কট

@ স্কট: আমি ক্যামের উত্তর সম্পূর্ণরূপে সঠিক হিসাবে বিবেচনা করছি, আমি কেবল একটি বিশেষ উদ্বেগজনক পরিণতির দিকে ইঙ্গিত করছি।
গর্ডন ডেভিসন 21
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.