&& এবং || এর পরে বাশ লাইনের ধারাবাহিকতাগুলি কোথায় নথিভুক্ত?


28

আমি এই নির্মাণটি স্ক্রিপ্টগুলিতে অনেক দেখেছি এবং এটি নিজেই ব্যবহার করেছি, তবে এটি আমাকে বিরক্ত করে যে ডকুমেন্টেশনে এটি খুঁজে পাচ্ছি না।

উদাহরণ:

[ -f file1 ] &&
[ -f file2 ] &&
echo "Both files exist." ||
echo "One or the other file doesn't exist."

এটি নিউলাইনগুলির আগে ব্যাকস্ল্যাশগুলির মাধ্যমেও করা যেতে পারে, যেমনটি উল্লেখ করা হয়েছে man bash:

If a \<newline> pair appears,  and  the  backslash  is  not
itself  quoted,  the \<newline> is treated as a line continuation (that
is, it is removed from the input stream and effectively ignored).

উদাহরণ:

[ -f file1 ] && \
[ -f file2 ] && \
echo "Both files exist." || \
echo "One or the other file doesn't exist."

... তবে এটি প্রয়োজনীয় বলে মনে হচ্ছে না। উপরের প্রথম সংস্করণটি ব্যাকস্ল্যাশ ছাড়াও কাজ করে।

আমি এটি কোথায় খুঁজে পাব man bash? (এছাড়াও, এটি bashনির্দিষ্ট বা পসিক্স অনুগত?)


আপনি যদি অফিসিয়াল বাশ বা পসিক্স ডকুমেন্টেশন সন্ধান করছেন তবে গিলসের উত্তর দেখুন। তবে এটিতে শেলটির নিয়ন্ত্রণ এবং পুনর্নির্দেশ অপারেটরগুলি কী তা আলোচনা করা হয় ? - আরো পর্যবেক্ষণের ;, &, (এবং)
জি-ম্যান

@ জি-ম্যান, আমি অনুমান করি যে আমার দিকে নির্দেশিত হয়নি? শুধু ভবিষ্যতের পাঠকদের জন্য? আমি যেমন প্রশ্নে বলেছিলাম, "এটি আমাকে বিরক্ত করে যে ডকুমেন্টেশনে এটি খুঁজে পাচ্ছি না" " আমি কীভাবে এটি কাজ করে তা ইতিমধ্যে জানতাম, সুতরাং এটি ছিল সরকারী ডকুমেন্টেশনের জন্য কেবল একটি অনুরোধ। :)
ওয়াইল্ডকার্ড

এমনকি অ্যারে ক্ষেত্রে, একটি অন্তর্নিহিত লাইন ধারাবাহিকতা হল: names=( Rama Soma<newline> Sita Diya )। পাইথন এখানে স্পষ্টভাবে বর্ণনা করে তবে বাশ ডকুমেন্টেশন মনে হয় না।
জামাদগনি

উত্তর:


39

একটি নতুন লাইন কয়েকটি প্রেক্ষাপটে উপেক্ষা করা হয় যেখানে স্পষ্টতই একটি নিরবচ্ছিন্ন আদেশ রয়েছে। এই প্রেক্ষিতে একটি নিয়ন্ত্রণ অপারেটর পর অন্তর্ভুক্ত ( &&, ||, |, &, ;, ;;, কিন্তু না !)।

ব্যাশ ম্যানুয়ালটিতে আমি এই নথিটি দেখতে পাচ্ছি না।

পসিক্সে, এটি ব্যাকরণ নিয়মের মাধ্যমে নির্দিষ্ট করা হয়েছে । নিয়মগুলি যেখানেই থাকুক না কেন linebreak, আপনার শূন্য বা তার বেশি লাইন বিরতি থাকতে পারে।


+1, আমি জানতাম না যে এটি সাধারণ পাইপ (|) এর জন্য কাজ করে। আমি আশা করি পাঠ্যযোগ্যতার জন্য আমরা সেগুলি পরবর্তী লাইনেও রেখে দিতে পারি, তবে এটি সেভাবে কাজ করে না (যদি এটি করা হয়, আপনাকে পূর্ববর্তী নিউলাইনটি স্পেস করতে হবে)।
অলিভিয়ার ডুলাক

1
@ অলিভিয়ারডুলাক কীভাবে এটি সম্ভবত কাজ করতে পারে? এটি যখন বর্তমান কমান্ড লাইনটি প্রক্রিয়া করছে, তখন এটি কীভাবে জানতে হবে যে আপনি |পরবর্তী লাইনের শুরুতে টাইপ করার পরিকল্পনা করছেন ? মনে রাখবেন, শেলটি কেবল স্ক্রিপ্টগুলিতে নয়, ইন্টারেক্টিভভাবেও ব্যবহৃত হয়, এবং ব্যাকরণ একই is
বার্মার

@ বারমার: আমি জানি, আমি এটি জানি (স্কুলে লেখক সংকলক ^^) ... আমি বলেছিলাম "আমার ইচ্ছা", এবং এটি খুব প্রশংসনীয় ইচ্ছা নয়
অলিভিয়ার দুলাক

1
@ ডকসালভাজার, আপনি কি যুক্তি ত্রুটির একটি উদাহরণ দিতে পারেন যা প্রতিরোধে সহায়তা করবে? এটি দেখতে আমার বেশ কষ্ট হয়েছে ....
ওয়াইল্ডকার্ড

2
@ ডকসালভাজার, কোডটি আমি যেমন লিখেছিলাম তেমন ব্যবহার করব না — এটি একটি চিত্রণ ছিল। শেষ লাইনটি ছাড়া (অন্য ধারা) আমি যদিও সেভাবে এটি ব্যবহার করব। ("যদি এই এবং এটি যদি হয় তবে এটি" this && this2 && thatঠিক আছে তবে একটি elseধারার জন্য আমি একটি প্রকৃত ব্যবহার করব if then else fi))
ওয়াইল্ডকার্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.