结束脚本并使用相同的选项和参数重新启动它

结束脚本并使用相同的选项和参数重新启动它

通常 !! 会重复最后给出的命令。但它似乎在 bash 脚本中不起作用。有没有办法结束脚本并使用上次给出的完全相同的选项和参数重复它?

附加信息:在我的脚本中,会检查服务器是否正在运行。如果没有,则由 etherwake 启动。我希望在这个部分结束并重新启动脚本,直到服务器最终启动。忽略这个问题,这很容易导致无限循环,从而威胁系统/网络稳定性。

有没有更简单/更安全的方法?似乎没有 GOTO LINE 命令或类似命令。

答案1

只需进行无限 while 循环:

/bin/sh #!/bin/sh 复制代码

while [ TRUE ]; 执行

检查服务器状态 10.0..
etherwake ff:ff..

完毕

答案2

怎么样

while server-is-not-running; do
    try-and-start-server
    sleep seconds-to-wait
done

在哪里

  • server-is-not-running是您当前的测试,以查看服务器是否正在运行,即 shell 函数或外部命令在服务器运行时返回非零值(或者,! server-is-running如果该函数或命令在服务器运行时返回零值)跑步)。
  • try-and-start-server是启动服务器的命令,也可以是 shell 函数或外部命令
  • seconds-to-wait等待成功启动的合理秒数

要限制尝试次数,请将 替换whilefor

for i in {1..number-of-attempts}; do
    try-and-start-server
    sleep seconds-to-wait
    server-is-not-running || break
done

相关内容