Linux 向bash中的位置参数添加秒选项
您好,我正在编写一个bash代码,其中包含一些位置参数,但是添加一个可选的seconds参数(允许某些函数运行x秒)的最佳方法是什么? 这是代码的外观:Linux 向bash中的位置参数添加秒选项,linux,bash,shell,parameters,case,Linux,Bash,Shell,Parameters,Case,您好,我正在编写一个bash代码,其中包含一些位置参数,但是添加一个可选的seconds参数(允许某些函数运行x秒)的最佳方法是什么? 这是代码的外观: doaction() { (run a process) } while [ $# -gt -0 ]; do case "$1" in --action|-a) doaction ;; --seconds|-s) ???????? $2 shift ;; esac shift done x秒后,
doaction()
{
(run a process)
}
while [ $# -gt -0 ]; do
case "$1" in
--action|-a)
doaction ;;
--seconds|-s)
???????? $2
shift ;;
esac
shift
done
x秒后,终止进程。
当我像这样运行脚本时会发生什么
/脚本-s10-a
而不是
/脚本-a-s 10
谢谢看起来这个命令在这里可能很有用。但是,这只适用于与当前运行的脚本不同的脚本(据我所知)
对于第二个问题,即您当前编写内容的方式,如果您使用/script-a-s10
,则结果是操作将在设置延迟之前运行。您可以通过使用标志指示应该执行操作来修复此问题,并且可以确保在执行之前设置超时(如果有)
以下是我对可能的解决方案的建议:
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
或其他无限期运行的命令替换脚本,可以测试脚本是否在指定的秒数后退出 您可以使用“getopts”来解决您的问题。您可能会发现该链接对您的场景很有用。请在帖子中添加相关信息,并将该链接用作唯一的来源。