Bash脚本错误:[:缺失]

时间:2013-04-22 03:10:36

标签: bash scripting

#!/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]

2 个答案:

答案 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