Check for command response str

I have a script that works fine ... but I would like it to do nothing if there is nobody on the network. I looked through all the documentation on how to check if str is not in a variable, but it always has the same error, which, I believe, may be something else, but literally nothing gets touched, except adding fi below for a new one an if statement to check if there are any users on the Internet ...

Error: 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 
+4
source share
1 answer

In your conditions, no special regular expression characters are used,

 if [[ $checkServer =~ "is running" ]]; then if [[ ! $checkUsers =~ "are 0 out" ]]; then 

In addition, you need to use the !~ Operator for the second condition: you have too many arguments

So you can use glob templates.

 if [[ $checkServer == *"is running"* ]]; then if [[ $checkUsers != *"are 0 out"* ]]; then 
+11
source

Source: https://habr.com/ru/post/1485390/


All Articles