เพื่อค้นหาว่าการดำเนินการบางอย่างภายในสคริปต์ Bash (v4 +) ใช้เวลานานเท่าใดฉันต้องการแยกเอาต์พุตจากtime
คำสั่ง "แยก" และ (ท้ายที่สุด) จับภาพภายในตัวแปร Bash ( let VARNAME=...
)
ตอนนี้ฉันกำลังใช้time -f '%e' ...
(หรือมากกว่าcommand time -f '%e' ...
เพราะในตัวของ Bash) แต่เนื่องจากฉันเปลี่ยนเส้นทางเอาต์พุตของคำสั่งที่ดำเนินการไปtime
แล้ว โดยทั่วไปปัญหาที่นี่คือที่จะแยกการส่งออกของtime
จากผลลัพธ์ของคำสั่งประหารชีวิต (s)
สิ่งที่ฉันต้องการคือฟังก์ชั่นการนับจำนวนเวลาเป็นวินาที (จำนวนเต็ม) ระหว่างการเริ่มต้นคำสั่งและความสมบูรณ์ มันไม่จำเป็นต้องเป็นtime
คำสั่งหรือในตัวที่เกี่ยวข้อง
แก้ไข:เนื่องจากคำตอบที่มีประโยชน์สองคำตอบด้านล่างนี้ฉันต้องการเพิ่มคำอธิบายสองคำ
- ฉันไม่ต้องการทิ้งเอาต์พุตของคำสั่งที่เรียกใช้แล้ว แต่มันจะไม่สำคัญว่ามันจะจบลงด้วย stdout หรือ stderr
- ฉันต้องการวิธีการโดยตรงมากกว่าหนึ่งทางอ้อม (เช่นการจับเอาท์พุทโดยตรงแทนที่จะเก็บไว้ในไฟล์ระดับกลาง)
การแก้ปัญหาโดยใช้date
มาไกลถึงสิ่งที่ฉันต้องการ
fork()
, และexecvp()
wait3()/wait4()
นี่คือสิ่งที่ในที่สุดเวลาและเพื่อนกำลังทำ ฉันไม่ทราบวิธีที่ง่ายในการทำใน bash / perl โดยไม่เปลี่ยนเส้นทางไปยังไฟล์หรือวิธีการที่คล้ายกัน