Echo bash函数时间(以分钟和秒为单位)
有没有办法在一个变量中得到分。秒,这样我就可以做类似的事情Echo bash函数时间(以分钟和秒为单位),bash,Bash,有没有办法在一个变量中得到分。秒,这样我就可以做类似的事情 somefunc(){ time ( sleep 90 ) } somefunc 编辑 我现在有以下资料: somefunc(){ blah=$(time ( sleep 90 )) echo "Somefunc finished in $blah" } somefunc Somefunc finished in 1m30s 在我的脚本中,我最终在subs
somefunc(){
time (
sleep 90
)
}
somefunc
编辑
我现在有以下资料:
somefunc(){
blah=$(time (
sleep 90
))
echo "Somefunc finished in $blah"
}
somefunc
Somefunc finished in 1m30s
在我的脚本中,我最终在subshell中同时调用这个函数的1到30,它运行我在其中使用的脚本,但是我从中得到了错误的时间。他们都说0m0.002s或类似的东西,只有几分之一秒,没有秒或分钟。。有什么想法吗?时间
的输出转到STDERR而不是STDOUT。为了将其值捕获到变量中,您需要执行以下操作:
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
您可以使用TIMEFORMAT
获得所需的输出
在行动中:
注意:这段代码实际上是特定于bash的,不适用于zsh的time
实现或/usr/bin/time
(考虑到问题的标题,这是可以的,但我想说的很好)感谢您确认@zmo。是的,我在bash
上测试了它。我不能说是为了zsh
shell<代码>:)
这对我很有效,但我似乎得到了时间命令的退出代码。有没有办法从time命令中获取$1的退出代码并将其设置为变量?不太确定。如果你做了timefoo
和echo$?
,你得到了什么?我发现了返回码的问题,但现在我发现我没有得到正确的时间。运行5分钟的命令将显示类似于0m0.032s的内容。思想?另外,在哪里可以找到时间表选项列表?
#!/bin/bash
somefunc() {
blah="$(TIMEFORMAT='%lU'; time ( $1 ) 2>&1 1>/dev/null)"
echo "Somefunc finished in $blah"
}
somefunc bleh
$ 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