Echo bash功能时间,以分钟和秒为单位

时间:2014-02-23 01:07:04

标签: bash

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或类似的东西,只有几分之一秒,没有秒或分钟......有什么想法吗?

1 个答案:

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