"অপেক্ষা করুন" ("ওয়েল্ট অ্যাম্পারস্যান্ড") কি দরকারী (বাশ) শেল / শেল স্ক্রিপ্ট আইডিয়াম বা কৌশল?


12

আমি জিএনইউ "ব্যাশ" শেলটি চালিত লিনাক্স মেশিনগুলির জন্য কিছু শেল স্ক্রিপ্ট "উত্তরাধিকার সূত্রে পেয়েছি"। একটি বিশেষ ক্ষেত্রে, মেশিনটি জিএনইউ বাশ সংস্করণ ২.০.৫ বি চালায়

এই স্ক্রিপ্টগুলির মধ্যে একটিতে লুপের wait &"ফর লাইনের" অংশ হিসাবে একটি ("অপেক্ষা অ্যাম্পারস্যান্ড") নির্দেশনা রয়েছে for। প্রথম দর্শনে, এটি একটি কৌতূহলী / আকর্ষণীয় মূর্খতা বলে মনে হচ্ছে, তবে এটির জন্য আমার ওয়েব অনুসন্ধানগুলি প্রাসঙ্গিক কোনও কিছুই ফেরেনি। man wait"BASH_BUILTINS" ("BASH BUILTINS COMMAND") ম্যানপেজ দেখায়, যার নিম্নলিখিত বিবরণ রয়েছে:

wait [n]  
  Wait for the specified process and return its termination status.
  n may be a process ID or a job spec­ification;  if  a  job spec is given,
  all processes in that job's pipeline are waited for.  If n is not
  given, all currently active child processes are waited for, and the 
  return status is zero. If n speci­fies a non-existent process or job, 
  the return status is 127.  Otherwise, the return status is the exit 
  status of the last process or job waited for.

এই ম্যানপেজের সেই অংশটি পড়ে, আমার কাছে মনে হয় wait &যা নিঃশব্দে (পটভূমিতে) নিশ্চিত হয়ে গেছে যে " বর্তমানে সক্রিয় সমস্ত শিশু প্রক্রিয়া অপেক্ষা করছে, এবং প্রত্যাবর্তনের অবস্থা শূন্য " " আমি কি এই ব্যাখ্যায় ঠিক আছি? এটি কি সাধারণ এবং / বা দরকারী প্রতিমা?

যুক্ত প্রসঙ্গে, আমি স্ক্রিপ্টে নিম্নলিখিত ধরণের ব্যবহার সম্পর্কে কথা বলছি:

for file in `ls *.txt ; wait &`
do
   ...
   [cp instructions]
   ...
   [mv instructions]
   ...
   [mailx instruction]
done

উত্তর:


14

এই কোডটি লেখার কোনও কারণ আমি কল্পনা করতে পারি না এবং আমি এই বিষয়ে নিশ্চিত নই যে এই কোডটি লিখেছেন সে কী অর্জন করতে চাইছিল। waitএখানে কিছুই না - তার দৃষ্টিকোণ থেকে, সেখানে হয় , কোন সন্তান প্রসেস তাই এটি শুধু অবিলম্বে বন্ধ হয়ে যাবে এবং মূলত একটি noop (হিসাবে কাজ waitনিজেই কমান্ড প্রতিকল্পন কারণে একটি শিশু প্রক্রিয়ায় executes, কিন্তু যে সম্পর্কহীন এর)।

একদিকে যেমন, ls এর আউটপুটকে বিশ্লেষণ করা বেশ ভঙ্গুর । পরিবর্তে, কেবল এটি করা বিবেচনা করুন:

for file in *.txt; do
    ...
done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.