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

上面的脚本是在工作日和每晚 7 点运行一个程序。我检查了空格,它仍然返回错误: date.sh: 2: [: missing ]

4

2 回答 2

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

于 2013-04-22T03:18:31.200 回答
5

您的代码有两个问题。

第一个是一个简单的错字:date %H应该是date +%H.

第二个是您看到的错误的原因:&&is not the right operator to use。它分隔命令,而您的if条件实际上应该是一个;bash 在 ] 的末尾寻找 ] [ `date +%u` -lt 6,没有找到它,并且出错了。你想-a改用。

于 2013-04-22T03:15:37.600 回答