我有下面的函数来计算执行命令的时间,单位为毫秒
function execute_command(){
#Calculate the execution time for the command $1
exec 3>&1 4>&2
exec_time=$( { time $@ 1>&3 2>&4; } 2>&1 )
exec 3>&- 4>&-
RES=$(awk "BEGIN {printf \"%d\",${exec_time}*1000}")
echo $RES
}
remove_java7_latency=$(execute_command "yum -y remove java7" | tail -n 1)
echo "remove_java7_latency=${remove_java7_latency}" >> /tmp/sampleoutput
但是当我检查sampleoutput
时,它显示为
remove_java7_latency=
如果我将函数中的RES重定向到相同的文件
echo "RES=${RES}" >> /tmp/sampleoutput
作为RES=1630.00
,它是正常的
有人能帮助我理解为什么它不能用于返回值吗?在这种情况下返回值的正确方式是什么?我不倾向于使用bc实用程序,因为底层示例默认情况下没有安装它。
1条答案
按热度按时间wztqucjr1#
exec_time实际上产生了多行输出。解决方法是
与