我有一个很好用的脚本......但是如果网上没有人,我希望它不会做任何事情。我查看了有关如何检查str是否不在变量中的所有文档,但它总是会出现相同的错误,我认为这可能是其他错误,但除了在底部添加fi之外,其他任何事情都没有触及用于检查是否没有在线用户的新if语句...
错误:startAnnouncement.sh: 44: [[: not found
#!/bin/bash
checkServer=$(/etc/init.d/minecraft status)
checkUsers=$(/etc/init.d/minecraft command list)
cd /.smc
# Is the server even running?
if [[ $checkServer =~ "is running" ]]; then
#Is anyone online to even see the message...?
if [[ ! $checkUsers =~ "are 0 out" ]]; then
# No count file? Create it.
if [ ! -f /.smc/lastAnnouncement.txt ]; then
echo 0 > /.smc/lastAnnouncement.txt
fi
# Load count
lastAnn=$(cat /.smc/lastAnnouncement.txt)
# ANNOUNCEMENTS
announcement[0]='Dont forget to check out http://fb.com/pyrexiacraftfans for news and updates'
announcement[1]='Use our Facebook page to request land protection! Visit http://fb.com/pyrexiacraftfans'
announcement[2]='Stay tuned for the announcement of our spawn build competition soon on our Facebook page!'
announcement[3]='We have upgraded the server with mcMMO and Essentials Economy! Stay tuned for shop openings!'
announcementText=${announcement[$lastAnn]}
# Send announcement
sendAnnouncement=$(/etc/init.d/minecraft command say $announcementText)
# Next announcement count
((++lastAnn))
# Write next announacment count
# Should we restart announcement que?
if [ $lastAnn -gt $((${#announcement[@]}-1)) ]; then
echo 0 > /.smc/lastAnnouncement.txt
else
echo $lastAnn > /.smc/lastAnnouncement.txt
fi
fi
fi
答案 0 :(得分:12)
您的条件实际上并不使用正则表达式特殊字符
if [[ $checkServer =~ "is running" ]]; then
if [[ ! $checkUsers =~ "are 0 out" ]]; then
此外,您需要在第二个条件下使用!~
运算符:您有太多参数
所以你不妨使用glob模式。
if [[ $checkServer == *"is running"* ]]; then
if [[ $checkUsers != *"are 0 out"* ]]; then