whileএকটি interesitng বাক্য গঠন আছে। আপনি do ... whileলুপের আগে একাধিক কমান্ড রাখতে পারেন , এবং আপনার বিশেষ প্রয়োজনীয়তার উপর নির্ভর করে প্রশ্নে কেসটিকে এই বৈশিষ্ট্যটি জাগ্রত করতে হবে: আপনি দীর্ঘতম ফাইলটি শেষ করতে বা কেবল সংক্ষিপ্ততম প্রান্তে পড়তে পারেন?
উদাহরণস্বরূপ, read || readসহজভাবে কাজ করে না (প্রশ্নের প্রয়োজনীয়তা অনুসারে), কারণ প্রথম ফাইলটির পড়া যখন হয় true, প্রথম ফাইলটি পড়া শুরু থেকে শেষ না হওয়া অবধি দ্বিতীয় ফাইলের পড়া বাদ দেওয়া হয় ... তারপরে, কারণ স্থিতি এখনও আছে true, যখন লুপটি অবিরত থাকে এবং দ্বিতীয় ফাইলটি শুরু থেকে শেষ পর্যন্ত পড়ে।
read && readআপনি যদি সংক্ষিপ্ততম ফাইল হিসাবে কেবলমাত্র পড়তে চান তবে ফাইলগুলি একযোগে (সমকালীনভাবে) পড়বে। তবে আপনি যদি উভয় ফাইলই এখানে পড়তে চান eofতবে আপনাকে while'sসিনট্যাক্স প্রয়োজনীয়তাগুলি নিয়ে কাজ করতে হবে, যেমন। হুকুমে অবিলম্বে সামনেdo while একটি নন-জিরো রিটার্ন কোড উত্পাদক লুপ যখন লুপ আউট বিরতি।
এখানে কিভাবে উভয় ফাইলগুলি পড়তে একটি উদাহরণ ফাইলের শেষে
while IFS= read -r line3 <&3 || ((eof3=1))
IFS= read -r line4 <&4 || ((eof4=1))
!((eof3 & eof4))
do
echo "$line3, $line4"
done 3<file3 4<file4
(আপনি পড়ার আগে eof3 এবং eof4 পরীক্ষা করতে চাইতে পারেন, তবে সাধারণ ধারণাটি বিশেষত চূড়ান্ত সত্য / মিথ্যা অবস্থায় রয়েছে।
||আমার জন্য কাজ করে না। এটি প্রক্রিয়া file1 তারপর file2 , কিন্তু এটা সাথে সিংক্রোনাইজ ফাইল রাখে&&, যা থেকে প্রস্থান করার সময় প্রথম উপর লুপ ফাইলের শেষে । - জিএনইউ বাশ 4.1.5