Bash (v4 +) komut dosyasındaki belirli işlemlerin ne kadar sürdüğünü bulmak için, çıktıyı time"ayrı ayrı" komutundan ayrıştırmak ve (sonunda) bir Bash değişkeninde ( let VARNAME=...) yakalamak istiyorum .
Şimdi, kullanıyorum time -f '%e' ...(daha ziyade command time -f '%e' ...Bash'in yerleşik olması nedeniyle), fakat zaten yürütülen komutun çıktısını yönlendirdiğim için, timekomutun çıktısını yakalamak için nasıl gideceğim konusunda gerçekten kayboldum . Temel olarak burada sorun çıkış ayırmak için bir timekomutun (ler) çıkışından.
İstediğim şey, bir komutun başlatılması ile tamamlanması arasındaki süreyi saniye cinsinden (tamsayılar) sayma işlevidir . timeKomut veya ilgili yerleşik olmak zorunda değildir .
Düzenleme: Aşağıdaki iki yararlı cevap göz önüne alındığında, iki açıklama eklemek istedim.
- Yürütülen komutun çıktısını çöpe atmak istemiyorum, ancak stdout'ta mı yoksa stderr'de mi sonuçlanacağı önemli değil.
- Dolaylı bir yaklaşımdan dolaysız bir yaklaşımı tercih ederim (yani çıktıları ara dosyalarda saklamak yerine doğrudan yakalamak).
dateŞimdiye kadar kullanan çözüm, istediklerime yaklaşıyor.
fork(),execvp()ve kullanarak C programında yapmaktırwait3()/wait4(). Nihayetinde zaman ve arkadaşların yaptığı budur. Bir dosyaya veya benzer bir yaklaşıma yönlendirmeden bunu bash / perl ile yapmanın simle yolunun farkında değilim.