2013-04-22 74 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