Bash 条件字符串和整数一起

Bash 条件字符串和整数一起

我试图在语句中进行整数和字符串比较,如下所示:

$ 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

相关内容