Bash

Bash 條件字元串和整數一起

  • December 3, 2018

我正在嘗試在如下語句中進行整數和字元串比較:

$ TimeHr=$(date +%_H)
$ Time=Night
$ echo TimeHr
1

$ if ((TimeHr>18 || TimeHr<5 )) && [ Time == "Night" ]; then echo "Night Time"; else echo "Day Time"; fi
Day Time

$ if ((TimeHr>18 || TimeHr<5 )) && [[ Time == "Night" ]]; then echo "Night Time"; else echo "Day Time"; fi
Day Time

但它沒有列印正確的 if 分支。我應該如何修改它?


編輯:

我更喜歡((用於數值比較,因為程式碼看起來更容易理解。

我會將兩個條件合併為一個

if [[ ( $TimeHr -gt 18 || $TimeHr -lt 5 ) && $Time == "Night" ]]; then echo "Night Time"; else echo "Day Time"; fi
Night Time

但是,您的原始測試有一個簡單的錯誤;在你需要使用的[和 測試中,而不僅僅是.[[``$variable``variable

所以

if ((TimeHr>18 || TimeHr<5 )) && [[ $Time == "Night" ]]; then echo "Night Time"; else echo "Day Time"; fi

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