বাশ (v4 +) স্ক্রিপ্টের মধ্যে নির্দিষ্ট অপারেশনগুলি কতক্ষণ সময় নেয় তা জানতে, আমি time
"পৃথকভাবে" কমান্ড থেকে আউটপুটকে পার্স করতে এবং (শেষ পর্যন্ত) এটি একটি ব্যাশ ভেরিয়েবলের মধ্যে ক্যাপচার করতে চাই ( let VARNAME=...
)।
এখন আমি ব্যবহার করছি time -f '%e' ...
(বা বরং command time -f '%e' ...
অন্তর্নির্মিত ব্যাশের কারণে), তবে যেহেতু আমি ইতিমধ্যে এক্সিকিউটড কমান্ডের আউটপুটটি পুনর্নির্দেশ করেছি আমি কমান্ডের আউটপুট ক্যাপচার করতে যাব সে সম্পর্কে আমি সত্যিই হারিয়ে ফেলেছি time
। মূলত এখানে সমস্যা হল আউটপুট আলাদা করতে এর time
মৃত্যুদন্ড কার্যকর কমান্ড (গুলি) আউটপুট থেকে।
আমি যা চাই তা হ'ল একটি আদেশ শুরু করার এবং এটির সমাপ্তির মধ্যে সেকেন্ডে (পূর্ণসংখ্যার) সময় পরিমাণ গণনা করার কার্যকারিতা ality এটি time
কমান্ড বা সংশ্লিষ্ট অন্তর্নির্মিত হতে হবে না।
সম্পাদনা করুন: নীচে দুটি দরকারী উত্তর দেওয়া, আমি দুটি ব্যাখ্যা যোগ করতে চেয়েছিলেন।
- আমি এক্সিকিউটেড কমান্ডের আউটপুট ফেলে দিতে চাই না, তবে এটি stdout বা stderr এ শেষ হয় কিনা তা আসলেই কিছু যায় আসে না।
- আমি একটি অপ্রত্যক্ষ একের চেয়ে প্রত্যক্ষ পদ্ধতির পছন্দ করতে চাই (অর্থাত্ মধ্যবর্তী ফাইলগুলিতে এটি সংরক্ষণের বিপরীতে সরাসরি আউটপুট ধরা)।
date
এখনও পর্যন্ত ব্যবহার করা সমাধানটি আমার যা ইচ্ছা তা বন্ধ হয়ে যায়।
fork()
,execvp()
এবংwait3()/wait4()
। সময় এবং বন্ধুরা এটিই শেষ পর্যন্ত করছে। কোনও ফাইল বা অনুরূপ পদ্ধতির দিকে পুনঃনির্দেশ না করে ব্যাশ / পার্লে এটি করার একক উপায় সম্পর্কে আমি অবগত নই।