2015-12-17 125 views
0

在我的殼這條命令的工作完美,我想將它寫一個bash腳本里面,但它不工作了:如何在bash腳本中獲取time命令的輸出?

make -s clean > /dev/null; { time make -j -s gallery > /dev/null; } 2>&1 | grep real | sed 's/^.*m//;s/.$/ /' > time_make 

的問題是時間的outpout。

在shell中COMMANDE:

make -s clean > /dev/null; { time make -j 1 -s gallery > /dev/null; } 2>&1 | grep m > time_make 

具有結果:

real 0m2.127s 
user 0m3.375s 
sys 0m0.532s 

那就好。

但在腳本(#!/ bin/sh的!):

同樣的命令具有結果:

3.36user 0.51system 0:02.08elapsed 186%CPU (0avgtext+0avgdata49100maxresident)k 
0inputs+2384outputs (0major+114980minor)pagefaults 0swaps 

如何獲得的 「真實」 在bash腳本的價值?

我真的不明白爲什麼它不是「時間」命令的輸出。任何人都可以幫助我嗎?

在此先感謝。

START=$(date +%s.%N) 
# command you want to time goes here 
END=$(date +%s.%N) 
printf -v DELTA "%g" $(bc <<<"$END - $START") 
echo "Command took ${DELTA} seconds" 

+0

嘗試顯式地運行'/ usr/bin/time'。 – paddy

+0

啊....它給了我一個我不想要的東西。謝謝,所以另一個應該是......恩,我嘗試了「whereis時間」給出的另一個,但我沒有找到一個好的 – Dreamk33

+0

使用'哪個時間'來找出正在使用什麼。它可能是shell的一部分,而不是一個命令。 – paddy

回答

1

如果你想捕捉命令需要在bash的時候,你可以做這樣的事情(假設你安裝了GNU時間的系統上)獲得更大的控制權實際上,你可以將輸出格式化爲小時,分鐘,秒等。

相關問題