MyFunction "${MyArguments[@]}" & # trailing ampersand (&) causes MyFunction to execute in background (with current environment)
zPid="$!" # bash $! provides the most recent background process id
timeout 2s bash -c wait $zPid # wait for MyFunction to finish (timeout after 2 seconds)
if [[ 124 = "$?" ]]; then # see man timeout for other error codes
echo "MyFunction timed out."
fi
4条答案
按热度按时间laximzn51#
与最初的尝试类似,考虑创建一个休眠并发送信号的子进程,但这次是one that you catch:
e0uiprwp2#
timeout命令可以执行您想要的操作。例如
您可以检查退出状态,以了解命令是否按照文档超时:
如果命令超时,则以状态124退出
djmepvbi3#
由于您没有显示完整的代码或需求,因此在这里只提供一小段代码,它将等待用户输入10秒,否则它将打印用户超时,您可以将其作为启动点,并可以相应地调整到您的脚本中。
q3aa05254#
我遇到了一个问题,超时需要导出许多函数和变量。与其把我的整个环境...
我发现下面的超时配置更简单: