如何在bash中正确设置时间?

时间:2016-03-30 18:44:27

标签: bash shell ubuntu command-line

我在bash脚本中有这两个功能

function start_time {
  unset date1
  date1=$(date +"%s")
}

function stop_time {
  unset date2 diff minutes seconds hours varhours varminutes varseconds
  date2=$(date +"%s")
  diff=$(($date2-$date1))   # <-- There is seconds
  minutes=$((($diff / 60)))
  seconds=$((($diff % 60)))
  hours=$((($minutes / 60)))

  if [ $hours != 0 ]; then varhours=$(echo "$hours Hours"); fi
  if [ $minutes != 0 ]; then varminutes=$(echo "$minutes Minutes"); fi
  if [ $seconds != 0 ]; then varseconds=$(echo "$seconds Seconds"); fi

  echo "++ $1 : $varhours $varminutes $varseconds "
}

所以我按照以下方式执行它们;

start_time    
"some bash job for example sleep command for a while"
stop_time "execution time was"

如果脚本采用例如 3小时23分50秒,则显示以下输出方式

  

执行时间为:3小时203分50秒

所以,我的问题是,是否有某种方法来显示正确的分钟数,我的意思是123分钟是脚本执行某项工作所用的总时间,所以预期的输出必须是:3小时23分50秒。

1 个答案:

答案 0 :(得分:1)

为什么重新发明轮子? time命令已经执行了您想要的操作:

command time --format "execution time was :%E" sleep 100

(这是使用command time而不是time来确保您没有调用内置的一些shell。