2016-01-17 45 views
1

我有下面的代碼,它提供了下面的相應錯誤。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

將((和))更改爲[]。 – nsilent22

+1

對於程序員,你的時間限制是錯誤的;用1代替23,用5代替8。你有咖啡因讓你繼續前進! (當然,你還必須檢查其餘的比較邏輯。) –

回答

1

您可以使用測試或算術評估,但不要混淆。

使用測試:

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

使用算術評價:

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

而且你使用 「小於或等於」 兩次,第二也許應該是 「大於或等於」。