这个命令在我的shell中完美运行,我想在bash脚本中编写它但它不再起作用了:
make -s clean > /dev/null; { time make -j -s gallery > /dev/null; } 2>&1 | grep real | sed 's/^.*m//;s/.$/ /' > time_make
问题在于时间的流逝。
在shell中这个命令:
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脚本中?
我真的不明白为什么"时间"它的输出不一样?命令。有人可以帮我吗?
提前致谢。
答案 0 :(得分:1)
如果你想捕获一个命令在bash中占用的时间,你可以通过做这样的事情来获得更多控制(假设你在安装了GNU时间的系统上):
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"
您实际上可以将输出格式化为小时,分钟,秒等。