gpt4 book ai didi

linux - 在 bash 中的位置参数中添加秒选项

转载 作者:太空宇宙 更新时间:2023-11-04 03:56:14 26 4
gpt4 key购买 nike

您好,我正在编写一个 bash 代码,其中包含一些位置参数,但是添加可选秒参数以允许某些函数运行 x 秒的最佳方法是什么?代码如下:

doaction()
{
(run a process)
}

while [ $# -gt -0 ]; do
case "$1" in
--action|-a)
doaction ;;
--seconds|-s)
???????? $2
shift ;;
esac
shift
done

x 秒后终止进程。当我运行脚本时会发生什么 ./脚本-s 10 -a代替 ./脚本-a -s 10

谢谢

最佳答案

看起来像timeout命令在这里可能很有用。但是,这只适用于与当前正在运行的脚本分开的脚本(据我所知)。

对于第二个问题,您当前编写内容的方式,如果您使用 ./script -a -s 10 那么结果将是该操作将在设置延迟之前运行。您可以通过使用标志来指示应执行该操作来修复此问题,并且可以确保在执行之前设置超时(如果有的话)。

这是我对可能的解决方案的建议:

while [ $# -gt -0 ]; do
case "$1" in
--action|-a)
action=true;;
--seconds|-s)
time="$2"
shift;;
esac;
shift
done

if $action; then
timeout $time /path/to/action.sh
else
# do something else
fi

其中 /path/to/action.sh 是您要运行特定时间的脚本的位置。您可以通过将脚本替换为 bash 命令 top 或其他无限期运行的命令来测试脚本是否在指定的秒数后退出。

关于linux - 在 bash 中的位置参数中添加秒选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24604238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com