我想将timeout命令与自己的函数一起使用,例如:
#!/bin/bash
function test { sleep 10; echo "done" }
timeout 5 test但是当调用这个脚本时,它似乎什么也不做。shell在我启动它之后立即返回。
有没有办法解决这个问题,或者超时不能在自己的函数上使用?
发布于 2012-08-13 21:28:35
timeout似乎不是bash的内置命令,这意味着它不能访问函数。您必须将函数体移动到一个新的脚本文件中,并将其作为参数传递给timeout。
发布于 2012-08-13 22:32:13
一种方法是这样做
timeout 5 bash -c 'sleep 10; echo "done"'而不是。尽管你也可以像这样使用hack up something:
f() { sleep 10; echo done; }
f & pid=$!
{ sleep 5; kill $pid; } &
wait $pid发布于 2012-08-13 21:28:44
timeout需要一个命令,并且不能在外壳函数上工作。
不幸的是,上面的函数与/usr/bin/test可执行文件的名称冲突,这会导致一些混淆,因为/usr/bin/test会立即退出。如果您将函数重命名为(比方说) t,您将看到:
brian@machine:~/$ timeout t
Try `timeout --help' for more information.这不是很有帮助,但有助于说明正在发生的事情。
https://stackoverflow.com/questions/11935130
复制相似问题