我们安装了有限的Linux版本,其中没有安装awk和bc。
有脚本执行时间计算。
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吗?
谢谢。
答案 0 :(得分:0)
Bash无法处理浮点计算,但看起来你可以逃脱整数运算。只需消除小数和以纳秒为单位的计算结果。
duration=$(($etime - $stime))
答案 1 :(得分: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)) )