यह जानने के लिए कि किसी बैश (v4 +) स्क्रिप्ट के भीतर कितने लंबे ऑपरेशन हुए हैं, मैं आउटपुट को time
"अलग से" कमांड से पार्स करना चाहूंगा और (अंततः) इसे बैश वेरिएबल ( let VARNAME=...
) के भीतर कैप्चर करूंगा ।
अब, मैं बैश बिल्ट-इन के कारण time -f '%e' ...
(या बल्कि) का उपयोग कर रहा हूं command time -f '%e' ...
, लेकिन चूंकि मैं पहले से ही निष्पादित कमांड के आउटपुट को रीडायरेक्ट कर रहा हूं, इसलिए मैं वास्तव में खो गया हूं कि मैं time
कमांड के आउटपुट को कैप्चर करने के लिए कैसे जाऊंगा । असल में समस्या यहाँ है उत्पादन को अलग करने की time
निष्पादित आदेश (रों) के उत्पादन से।
मैं जो चाहता हूं वह कमांड शुरू करने और उसके पूरा होने के बीच सेकंड (पूर्णांक) में समय की मात्रा की गणना करने की कार्यक्षमता है। यह time
कमांड या संबंधित बिल्ट-इन होना जरूरी नहीं है ।
संपादित करें: नीचे दिए गए दो उपयोगी उत्तर, मैं दो स्पष्टीकरण जोड़ना चाहता था।
- मैं निष्पादित कमांड के आउटपुट को फेंकना नहीं चाहता, लेकिन यह वास्तव में कोई फर्क नहीं पड़ेगा कि यह स्टडआउट या हैडर पर समाप्त होता है या नहीं।
- मैं एक अप्रत्यक्ष एक पर एक प्रत्यक्ष दृष्टिकोण (यानी उत्पादन को सीधे मध्यवर्ती फाइलों में संग्रहीत करने के लिए विरोध के रूप में पकड़ता हूं) पर पसंद करूंगा।
date
अब तक का उपयोग करने के लिए समाधान मैं क्या चाहता है बंद हो जाता है।
fork()
,execvp()
औरwait3()/wait4()
। यह आखिरकार समय और दोस्त क्या कर रहे हैं। मैं एक फ़ाइल या समान दृष्टिकोण पर पुनर्निर्देशन के बिना इसे bash / perl में करने के लिए एक नकली तरीके से अवगत नहीं हूं।