somefunc(){
time (
sleep 90
)
}
somefunc
有没有办法在变量中获得minutes.seconds所以我可以做类似
的事情somefunc(){
blah=$(time (
sleep 90
))
echo "Somefunc finished in $blah"
}
somefunc
Somefunc finished in 1m30s
我现在有以下内容:
timeit() {
blah="$(TIMEFORMAT='%lU'; time ( $1 $2 $3 ) 2>&1 1>/dev/null)"
a=$?
echo "$2 $3 job finished in $blah"
return $a
}
timeit /home/blah/script.sh $var1 $var2
在我的脚本中,我最终在子shell中同时调用此函数的1到30个,这个子shell运行我正在使用的脚本,但是我得到了错误的时间。他们都说0m0.002s或类似的东西,只有几分之一秒,没有秒或分钟......有什么想法吗?
答案 0 :(得分:3)
time
的输出转到 STDERR 而不是 STDOUT 。为了将它的值捕获到变量,您需要执行以下操作:
#!/bin/bash
somefunc() {
blah="$(TIMEFORMAT='%lU'; time ( $1 ) 2>&1 1>/dev/null)"
echo "Somefunc finished in $blah"
}
somefunc bleh
您可以使用TIMEFORMAT
来获得所需的输出。
$ cat script.sh
#!/bin/bash
somefunc() {
blah="$(TIMEFORMAT='%lU'; time ( $1 ) 2>&1 1>/dev/null)"
echo "Somefunc finished in $blah"
}
somefunc ls
$ bash script.sh
Somefunc finished in 0m0.001s