我正在尝试创建一个if语句,如果小时在13到23之间,它会将小时设置为12.现在,下面是我的shell脚本代码的片段:
#!/bin/bash
HOUR=$1
if [ $HOUR > 13 ] && [ $HOUR < 23 ];
then
$HOUR=12
fi
现在我在运行此脚本时遇到错误。如何调整此脚本以获得上面指定的所需条件?
答案 0 :(得分:1)
if [ $HOUR -gt 13 -a $HOUR -lt 23 ]
then
HOUR=12
fi
$HOURS=12
(已移除$)答案 1 :(得分:0)
您需要以算术方式而不是文本方式来评估该表达式。尝试这样的事情:
#!/bin/bash
HOUR=$1
if (( $HOUR > 13 )) && (( $HOUR < 23 ));
then
HOUR=12
fi
答案 2 :(得分:0)
要在Bash测试中使用<
或>
,您需要[[...]]形式的测试构造。但是,这并不符合您的想法。那些是词典测试。
您可以使用-lt
和-gt
进行算术比较:
$ H=14
$ [[ $H -gt 13 && $H -lt 23 ]]; echo $?
0
(0
在这种情况下表示为真......)
或者,使用((...))进行算术测试构造。然后,您可以使用C风格的三元分配来一步测试和分配:
$ H=20
$ (( H = H>13 && H<23 ? 12 : H )); echo $H
12
答案 3 :(得分:0)
更短的版本:
#!/bin/bash
HOUR=$1
[[ $HOUR > 13 && $HOUR < 23 ]] && HOUR=12