Bash 運算符速查,在script內使用
比較運算符(數值)
| 運算符 |
意思 |
-eq |
等於 |
-ne |
不等於 |
-gt |
大於 |
-lt |
小於 |
字串比較
| 運算符 |
意思 |
= |
等於 |
!= |
不等於 |
-n |
字串長度 > 0(非空為真) |
-z |
字串長度 = 0(空字串為真) |
檔案與目錄測試
| 運算符 |
意思 |
-d 路徑 |
如果路徑是目錄則為真 |
-e 路徑 |
如果檔案存在則為真 |
-f 路徑 |
如果是普通檔案則為真 |
-r 路徑 |
檔案存在且可讀 |
-w 路徑 |
檔案存在且可寫 |
-x 路徑 |
檔案存在且可執行 |
退出碼 $?
- Bash 裡,命令執行成功 →
$? = 0
- 命令失敗 →
$? ≠ 0
- 可以用來判斷上一個命令是否執行成功。
例子:
systemctl status httpd
echo $?
# 如果 httpd 正在運行,會輸出 0
# 如果沒運行,會輸出非 0
監控進程的範例邏輯
- 檢查 PID 檔案(例如
/var/run/httpd/httpd.pid)是否存在:
- 存在 → 進程運行中
- 不存在 → 進程沒運行,嘗試啟動
- 啟動進程後,再用
$? 判斷是否成功啟動:
- 成功 → 通知「進程啟動成功」
- 失敗 → 通知「啟動失敗,請聯絡管理員」
- 將日誌寫入檔案(例如
/var/log/monit_httpd.log),方便追蹤。
基本範例腳本