Bash脚本错误:[:缺失]

Sha*_*apa 3 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
Run Code Online (Sandbox Code Playgroud)

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

hek*_*mgl 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
Run Code Online (Sandbox Code Playgroud)

请注意,这[只是test命令及其]最后一个参数的简写.例如,&&操作符与任何其他命令行一样使用cd /home && ls


Cai*_*von 5

您的代码有两个问题.

首先是一个简单的拼写错误:date %H应该是date +%H.

第二个是你看到错误的原因:&&不是正确的操作符.它将命令分开,而你的if条件应该是单一的; bash查找]结束时[ `date +%u` -lt 6,找不到它,并出错.你想要-a改用.