时间命令不允许我使用-f和bash函数

时间:2014-11-10 02:07:26

标签: bash time

我想在bash脚本中使用time命令来计算某个函数的已用时间,但是当我尝试使用任何一个选项调用它来测量脚本函数之一时,time命令会给我错误消息,比如'--format',我想利用它。

如果我使用任何命令从终端使用'time [...]',也会发生同样的事情。但是,从终端使用它,它在我输入'/ usr / bin / time [...]'而不仅仅是'time [...]'时有效,但是当我调用'/ usr / bin / time ANY_FUNCTION_INSIDE_ANY_SCRIPT [参数]'在脚本中,它抱怨被调用的函数不是有效的命令。

test.sh代码:

#!/bin/bash

testime ()
{
    printf "test message is \"$1\" \n"
    printf "just testing...\n"
    sleep 5
    read -p "enter something: " buffer
    echo $buffer
}

time -f "testime() finished after %E" testime "damn!"
printf "Bye bye!\n\n"
exit

输出:

$ ./test.sh
./test.sh: line 12: -f: command not found

real    0m0.001s
user    0m0.000s
sys     0m0.001s
Bye bye!

但是......如果我使用没有选项的时间,比如“-f ...”,就像这里:

[...]

time testime "damn!"
printf "Bye bye!\n\n"
exit

...脚本正常工作,如您所见:

$ ./test.sh
test message is "damn!" 
just testing...
enter something: SOMETHING_I_HAVE_ENTERED
SOMETHING_I_HAVE_ENTERED

real    0m24.050s
user    0m0.000s
sys 0m0.001s
Bye bye!

当我调用'/ usr / bin / time -f [...]'时,因为当我从终端做东西时使用'-f [...]'或不使用它,它会起作用给我一些这样的输出:

$ ./test.sh
/usr/bin/time: cannot run testime: No such file or directory
Command exited with non-zero status 127
0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 340maxresident)k
0inputs+0outputs (0major+72minor)pagefaults 0swaps
Bye bye!

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

最后提到命令和-f选项。

Shell> time testime 'damn!' -f 'testime() finished after %E'
test message is "damn!"
just testing...
enter something: abc
abc

real    0m7.513s
user    0m0.000s
sys     0m0.003s

测试命令的使用清楚地提到你需要在选项之前给出命令。

NAME
       time - time a simple command or give resource usage

SYNOPSIS
       time [options] command [arguments...]

仅在[options]中给出-P,其余为参数。