我正在尝试使用以下bash脚本找出脚本执行时间
start=$(date +%s.%N) # run time
# code to execute script
end=$(date +%s.%N) # end time
printf '\n"total_time":' "$((start-end))"
但是从printf
声明
syntax error: invalid arithmetic operator (error token is ".064560120")
我还想在输出中加入单词s
或ms
答案 0 :(得分:1)
Bash不进行浮点运算。您必须使用其他shell,或调用外部程序,例如bc
。
$ a=$(date +%s.%N); sleep .4; b=$(date +%s.%N)
$ diff=$(echo "$b - $a" | bc -l)
$ printf "runtime: %0.3f seconds\n" "$diff"
runtime: 0.403 seconds
(printf上的%s
会打印bc
的原始输出。)
例如,在zsh中,它直接在shell中工作:
$ zsh -c 'a=$(date +%s.%N); sleep .4; b=$(date +%s.%N); echo "runtime: $(( b - a ))" seconds'
runtime: 0.40290713310241699 seconds
另请参阅:{。3}}在Unix.SE。