#!/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]
#!/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]
您的代码有两个问题。
首先是一个简单的错字:date %H
应该是date +%H
。
第二个是你看到的错误的原因:&&
不是正确的操作符使用。它分隔命令,而您的if
条件应该是单一的; bash寻找]在[ `date +%u` -lt 6
的末尾,找不到它,并且出错。您想用-a
代替。
将其更改为:
#!/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
得到了新的错误:date.sh:2:[:11:意外的操作符 – 2013-04-22 03:21:58
我测试了相同的代码,它工作。你确定你的shell是* bash *吗?哪个bash版本? – hek2mgl 2013-04-22 03:22:43
sicksand @ awalfathi:〜$ echo $ BASH_VERSION 4.2.25(1)-release – 2013-04-22 03:45:03
我在哪里把-a命令? – 2013-04-22 03:45:32
用它替换'&&'。 – Cairnarvon 2013-04-22 03:53:35
[code]#!/ bin/bash if ['date +%u' -lt 6 -a'date +%H' =='19'];然后 回声'对不起,你今天不能运行这个程序。' 其他 回声“是的,你今天可以运行” 网络 [/代码] 回报date.sh:2:13:意外的运营商 – 2013-04-22 05:06:31