我正在尝试在语句中同时进行整数和字符串比较,如下所示:
$ 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
但是,您的原始测试有一个简单的错误;在[
and[[
测试中,您需要使用$variable
而不仅仅是variable
。
所以
if ((TimeHr>18 || TimeHr<5 )) && [[ $Time == "Night" ]]; then echo "Night Time"; else echo "Day Time"; fi
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句