通常 !! 会重复最后给出的命令。但它似乎在 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
等待成功启动的合理秒数
要限制尝试次数,请将 替换while
为for
:
for i in {1..number-of-attempts}; do
try-and-start-server
sleep seconds-to-wait
server-is-not-running || break
done