我想在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!
有人知道为什么会这样吗?
答案 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
,其余为参数。