【发布时间】:2014-11-10 02:07:25
【问题描述】:
我想在 bash 脚本中使用 time 命令来计算某个函数的运行时间,但是当我尝试调用它以使用它的任何选项测量脚本的函数之一时,time 命令会给我错误消息,比如我想使用的'--format'。
如果我从终端使用任何命令的“时间 [...]”,也会发生同样的事情。但是,从终端使用它,当我输入 '/usr/bin/time [...]' 而不仅仅是 'time [...]' 时,它可以工作,但是当我调用 '/usr/bin/time ANY_FUNCTION_INSIDE_ANY_SCRIPT [ arguments]' 在脚本中,它抱怨调用的函数不是有效的命令。
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!
有人知道为什么会这样吗?
【问题讨论】: