এই স্ক্রিপ্টটি থেকে প্রস্থানিত কোডটি শেষ করতে এবং ফিরে আসতে বেশ কয়েকটি উপ-প্রক্রিয়াগুলির জন্য বাশ স্ক্রিপ্টে কীভাবে অপেক্ষা করবেন! = 0 যখন সাব-প্রসেসিসের কোনওটি কোড দিয়ে শেষ হয়! = 0?
সরল লিপি:
#!/bin/bash
for i in `seq 0 9`; do
doCalculations $i &
done
wait
উপরের স্ক্রিপ্টটি সমস্ত 10 স্প্যানড সাব-প্রসেসের জন্য অপেক্ষা করবে, তবে এটি সর্বদা প্রস্থান স্থিতি 0 (দেখুন help wait
) দেবে। আমি কীভাবে এই স্ক্রিপ্টটি সংশোধন করতে পারি যাতে এটি প্রসারিত সাবপ্রসেসিসগুলির প্রস্থান স্থিতিগুলি আবিষ্কার করতে পারে এবং প্রগতিগুলির কোনও কোড দিয়ে শেষ হলে প্রস্থান কোড 1 ফিরে আসবে! = 0?
উপ-প্রসেসগুলির পিআইডি সংগ্রহ করার চেয়ে এর জন্য আর কোনও ভাল সমাধান আছে কি না, যাতে তাদের জন্য ক্রম এবং অপেক্ষা করুন প্রস্থান স্থিতিগুলির জন্য?
wait -n
একটি ছোট সমস্যা রয়েছে: যদি কোনও শিশু চাকরি না থাকে (ওরফে রেস শর্ত), এটি একটি শূন্য-বহির্গমন স্থিতি (ব্যর্থ) দেয় যা একটি ব্যর্থ শিশু প্রক্রিয়া থেকে পৃথক হতে পারে।
wait -n
, কেবল প্রথম / পরবর্তী কমান্ডটি শেষ হলেই ফিরে আসার জন্য আধুনিক ব্যাশে উপলব্ধ।