Shell
如何使用基於星期幾的 If-Else 查詢?
問題:我需要檢查今天是否是星期四,並根據此條件的結果執行不同的操作。我嘗試了兩種不同的方法:
獲取日期名稱:
DAYOFWEEK=$(date +"%a") echo DAYOFWEEK: $DAYOFWEEK if ["$DAYOFWEEK" == "Thu"]; then echo YES else echo NO fi
獲取日期編號:
DAYOFWEEK=$(date +"%u") echo DAYOFWEEK: $DAYOFWEEK if ["$DAYOFWEEK" == 4]; then echo YES else echo NO fi
在這兩種情況下,輸出都是 NO,即使它應該是 YES。怎麼了?
問題是缺少空白。
以下程式碼將在其
[
內置命令接受==
作為別名的 shell 中工作=
:if [ "$DAYOFWEEK" == 4 ]; then echo YES; else echo NO; fi
但請記住(見
help test
)bash
:
==
沒有正式提及,你應該=
用於字元串比較-eq
用於十進制算術測試(在這裡不會有所不同,date +%u
但date +%d
例如在比較時會有所不同04
,並且4
在數字上相同但在詞法上不同)。我會選擇:
if [ "${DAYOFWEEK}" -eq 4 ]; then echo YES; else echo NO; fi
通常,您應該更喜歡天數方法,因為它對目前locale的依賴性較小。在我的系統上的輸出
date +"%a"
是今天Do
。