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, time
komutun çıktısını yakalamak için nasıl gideceğim konusunda gerçekten kayboldum . Temel olarak burada sorun çıkış ayırmak için bir time
komutun (ler) çıkışından.
İstediğim şey, bir komutun başlatılması ile tamamlanması arasındaki süreyi saniye cinsinden (tamsayılar) sayma işlevidir . time
Komut 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.