我试图在语句中进行整数和字符串比较,如下所示:
$ 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 分支。我应该如何修改呢?
编辑:
我更喜欢使用((
数字比较,因为代码看起来更容易理解。
答案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