通常 !重複最後給定的命令。但它似乎不適用於 bash 腳本。有沒有辦法結束腳本並使用上次給出的完全相同的選項和參數重複它?
附加資訊:在我的腳本的一部分中,檢查伺服器是否正在運行。如果不是,則由 etherwake 啟動。這是我希望腳本結束並重新啟動的部分,直到伺服器最終啟動。忽略這個問題很容易導致無限循環,從而可能威脅系統/網路的穩定性。
有更簡單/更安全的方法嗎?似乎沒有 GOTO LINE 命令或類似的命令。
答案1
只需建立一個無限 while 循環:
#!/bin/sh
而[真];做
check_server_status 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