1

我们安装了未安装 awk 和 bc 的有限 Linux 版本。

有执行时间计算的脚本。

ms_date()
{
  date '+%s.%N' | sed 's/N$//'
}

stime=$(ms_date)    
#some code
etime=$(ms_date)
duration=$(echo ${etime} - ${stime} | bc)

如果没有安装 bc 和 awk 并且无法使用,请您建议什么可以用于浮点数计算?

可以使用 expr 或 sed 完成吗?

谢谢你。

4

2 回答 2

0

Bash 无法处理浮点计算,但看起来你可以摆脱整数运算。只需在纳秒内取消小数和计算。

duration=$(($etime - $stime))

于 2013-09-20T15:05:31.437 回答
0

在必须显示之前不要使用小数:

ms_date () { date +%s%N; }
display_time () { 
    if [[ $1 =~ ^([0-9]*)([0-9]{9})$ ]]; then
        printf "%s.%s\n" ${BASH_REMATCH[1]} ${BASH_REMATCH[2]}
    fi
}

start=$(ms_date)
sleep 1
end=$(ms_date)
duration=$( display_time $((end - start)) )
于 2013-09-20T15:33:07.763 回答