在 shell 腳本世界中,理解各種命令之間的細微差別對於編寫高效的腳本至關重要。兩個經常引起混淆的命令是wait 和 sleep。雖然它們看上去很相似,但在腳本執行中每個都有其獨特的用途。
The sleep Command
sleep 命令用於在腳本執行過程中延遲一個固定的時間。用於暫停執行一段指定的時間。
Syntax :
sleep NUMBER[SUFFIX]...
- NUMBER 可以是整數或浮點數。
-
SUFFIX 可以是 s 表示秒(默認),m 表示分鐘,h 表示小時,或 d 表示天。
使用示例:
#!/usr/bin/env bash echo "Wait for 5 seconds" sleep 5 echo "Resumed after 5 seconds"
The wait Command
wait 命令用於暫停腳本,直到滿足特定條件,通常是完成後台進程。用於腳本執行與後台任務的完成同步。
- Syntax :
wait [id]
id 為後台進程的 job ID。如果沒有指定 ID,則該命令等待當前所有子進程完成。
使用示例:
#!/usr/bin/env bash
echo "Start background process"
some_long_running_process &
process_id=$!
echo "Wait for the process to complete"
wait $process_id
echo "Background process completed"
Conclusion
由於不同的原因,wait 和 sleep 在 shell 腳本中都是至關重要的。sleep 直接用於添加延遲,而 wait 則更為複雜,適合於管理進程依賴關係。理解它們的區別是有效編寫 shell 腳本的關鍵。
我的開源項目
- course-tencent-cloud(酷瓜雲課堂 - gitee倉庫)
- course-tencent-cloud(酷瓜雲課堂 - github倉庫)