#!/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
上面的脚本是在工作日和每晚7点运行一个程序。我检查了空格,但仍然返回错误:date.sh:2:[:missing]
答案 0 :(得分: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
答案 1 :(得分:5)
您的代码存在两个问题。
第一个是简单的拼写错误:date %H
应为date +%H
。
第二个是您看到错误的原因:&&
不适合使用。它分隔命令,而你的if
条件应该是单一的; bash在[ `date +%u` -lt 6
的末尾查找,找不到它,并且输出错误。您想要使用-a
。