gpt4 book ai didi

linux - 在这种情况下,如何在 bash 脚本中执行多个 if、else 语句?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:02 25 4
gpt4 key购买 nike

现在我正在运行一些带有 bash 脚本的程序(使用 Cygwin)。

基本上我所做的是在程序启动后,运行一个循环来检查程序是否仍在运行。

我在做:

while true
do
if [ "$(ps -W | grep -w name | gawk '{print $8,$9}' | gawk -F \\ '{print $4}')" == 'program' ];then
sleep 1
else
"start program" (whatever is needed here)
fi
done

但我开始意识到多次使用这样的脚本只会导致使用不必要的系统资源。

我试过做一个 if then,elif,但它永远不会超过第一个 if。

我需要它“好吧,第一个如果是负数,尝试下一个,走到最后,重新开始”。

这是我的脚本的副本,我忘了说我使用的是 Cygwin,但这实际上并没有改变任何东西,因为它似乎仍然使用正常的 bash 脚本,只是启动文件的路径可能不同。 http://pastebin.com/s8ZdPQMn是的,h。不在那里我似乎无法编辑 pastebin。

我的总体计划是检查第一个 SRPro 是否正在运行,检查下一个,等等,只有在检测到没有运行时才触发。

编辑:我解决了。不确定为什么,但在我最初的每个程序单个文件中,gawk 最后打印 4 美元给了我想要的东西,但由于某种原因,当这样做时,它变成了 5 美元。因此,将 $4 更改为 $5 会使脚本正常工作。

编辑:虽然有一个非常奇怪的问题是,它会连续工作几分钟,然后有时突然变得困惑,并启动一个程序或其他程序的 7 个副本。它也可以是随机开始的。

最佳答案

您可能会发现 wait 命令(在 bash 提示符下尝试 help wait)很有用。目前还不清楚你到底想要什么,但作为一个例子,这是一个基本的重生功能:

$ respawn () {
> while true
> do
> "${@}" &
> wait ${!}
> echo "respawning ..."
> done
> }
$ respawn some_program arg1 arg2 etc

关于linux - 在这种情况下,如何在 bash 脚本中执行多个 if、else 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13411674/

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