বাশ স্ক্রিপ্টে, আমি লম্বা লম্বা কমান্ড লাইনের মানক আউটপুট ক্যাপচার করতে চাই, যাতে প্রাথমিক বিশিষ্টতা এখনও চলমান থাকাকালীন তাদের বিশ্লেষণ ও রিপোর্ট করা যায়। এটি এমন জটিল উপায় যা আমি এটি করার কল্পনা করতে পারি:
# Start long command in a separated process and redirect stdout to temp file
longcommand > /tmp/tmp$$.out &
#loop until process completes
ps cax | grep longcommand > /dev/null
while [ $? -eq 0 ]
do
#capture the last lines in temp file and determine if there is new content to analyse
tail /tmp/tmp$$.out
# ...
sleep 1 s # sleep in order not to clog cpu
ps cax | grep longcommand > /dev/null
done
আমি এটি করতে একটি সহজ উপায় আছে কিনা তা জানতে চাই।
সম্পাদনা করুন:
আমার প্রশ্নটি পরিষ্কার করার জন্য, আমি এটি যুক্ত করব। longcommand
লাইন দ্বারা প্রদর্শন এটির স্থিতি লাইন প্রতি সেকেন্ডে একবার। longcommand
সম্পূর্ণ হওয়ার আগে আউটপুটটি ধরতে চাই ।
এইভাবে, longcommand
আমি প্রত্যাশিত ফলাফলগুলি সরবরাহ না করলে আমি সম্ভাব্যরূপে হত্যা করতে পারি।
আমি চেষ্টা করেছি:
longcommand |
while IFS= read -r line
do
whatever "$line"
done
তবে whatever
(উদাহরণস্বরূপ echo
) longcommand
সম্পূর্ণ হওয়ার পরে কেবল সম্পাদন করে ।