次の文で整数と文字列の比較を実行しようとしています。
$ 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
ただし、ブランチが正しい場合は印刷されません。どうすれば修正すればいいですか?
編集する:
((
コードがわかりやすく見えるので、数値比較を好みます。
ベストアンサー1
二つの条件を一つにまとめましょう。
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