Shell

如何使用基於星期幾的 If-Else 查詢?

  • May 21, 2018

問題:我需要檢查今天是否是星期四,並根據此條件的結果執行不同的操作。我嘗試了兩種不同的方法:

獲取日期名稱:

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 testbash

  • ==沒有正式提及,你應該=用於字元串比較
  • -eq用於十進制算術測試(在這裡不會有所不同,date +%udate +%d例如在比較時會有所不同04,並且4在數字上相同但在詞法上不同)。

我會選擇:

if [ "${DAYOFWEEK}" -eq 4 ];  then    echo YES; else    echo NO; fi

通常,您應該更喜歡天方法,因為它對目前locale的依賴性較小。在我的系統上的輸出date +"%a"是今天Do

引用自:https://unix.stackexchange.com/questions/67184