2013-04-22 93 views
3
#!/bin/bash 
if [ `date +%u` -lt 6 && `date +%H` == '19' ] ; then 
    echo 'Sorry, you cannot run this program today.' 
else 
    echo 'yes, you can run today' 
fi 

上面的腳本是在平日和每7PM運行一個程序。我檢查空格,它仍然返回錯誤:date.sh:2:[:missing]Bash腳本錯誤:[:missing]

回答

5

您的代碼有兩個問題。

首先是一個簡單的錯字:date %H應該是date +%H

第二個是你看到的錯誤的原因:&&不是正確的操作符使用。它分隔命令,而您的if條件應該是單一的; bash尋找]在[ `date +%u` -lt 6的末尾,找不到它,並且出錯。您想用-a代替。

+1

我在哪裏把-a命令? – 2013-04-22 03:45:32

+1

用它替換'&&'。 – Cairnarvon 2013-04-22 03:53:35

+0

[code]#!/ bin/bash if ['date +%u' -lt 6 -a'date +%H' =='19'];然後 回聲'對不起,你今天不能運行這個程序。' 其他 回聲「是的,你今天可以運行」 網絡 [/代碼] 回報date.sh:2:13:意外的運營商 – 2013-04-22 05:06:31

6

將其更改爲:

#!/bin/bash 
if [ `date +%u` -lt 6 ] && [ `date +%H` == '19' ] ; then 
    echo 'Sorry, you cannot run this program today.' 
else 
    echo 'yes, you can run today' 
fi 

注意,[只是爲test命令和速記]的最後一個參數吧。 &&運營商像在任何其他命令行使用,例如cd /home && ls

+0

得到了新的錯誤:date.sh:2:[:11:意外的操作符 – 2013-04-22 03:21:58

+0

我測試了相同的代碼,它工作。你確定你的shell是* bash *嗎?哪個bash版本? – hek2mgl 2013-04-22 03:22:43

+0

sicksand @ awalfathi:〜$ echo $ BASH_VERSION 4.2.25(1)-release – 2013-04-22 03:45:03