获取脚本执行时间

时间:2018-01-30 21:52:19

标签: bash shell awk sed sh

我正在尝试使用以下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")

我还想在输出中加入单词sms

1 个答案:

答案 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。