2015-12-17 91 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时间的系统上)获得更大的控制权实际上,你可以将输出格式化为小时,分钟,秒等。

相关问题