bash - 在bash中,浮点数计算

  显示原文与译文双语对照的内容
0 0

我们安装了有限的Linux版本,其中没有安装awk和 bc 。

在这里执行时间计算的脚本。


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

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

如果没有安装,并且不能使用,你可以建议什么可以使用浮动数字计算?

可以用expr或者sed完成?

谢谢你。

时间: 原作者:

0 0

必须在必须显示的情况下使用小数:


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

start=$(ms_date)
sleep 1
end=$(ms_date)
duration=$( display_time $((end - start)) )

原作者:
0 0

Bash无法处理浮点运算,但看起来你可以得到整数算术。 只需用纳秒的小数和 calc 。

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

...