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