时间间隔的bash检查 - 条件赋予“未找到”

时间:2016-01-17 17:52:17

标签: bash

我有以下代码,在其下方提供相应的错误。

#!/bin/sh

H=$(date +%H)
# If during sleeping hours (23 [or 11 pm] to 8 am), *don't* turn on the lights
night_time=8
wake_up_time=23 
if (( $H -le $night_time -o $H -le $wake_up_time )); then 
    # Bedtime
    echo "You need to go to bed"
else
    echo "You're probably awake"
fi

错误:

/file_location/file.sh: 7: /file_location/file.sh 11: not found

所以看来我有条件的问题。

可能导致此错误的原因是什么?我在(())和test之间添加了空格,我用算术括号(代替括号[test命令,因为我是处理数字。

我还能错过什么?

1 个答案:

答案 0 :(得分:1)

您可以使用测试或算术评估,但不要混淆它们。

使用测试:

if [ "$H" -le "$night_time" -o "$H" -ge "$wake_up_time" ];

使用算术评估:

if (( "$H" <= "$night_time" || "$H" >= "$wake_up_time" ));

你使用&#34;少于或等于&#34;两次,第二次应该是&#34;更大或等于&#34;。