Skip to content
Advertisement

While loop not equal command not found

I am trying to perform a simple while loop comparing a variable to a string. It fails to load with the error on this line. Error states [: missing `]’ and : command not found. My while loop looks like;

mainMenuInput = ""
while ["$mainMenuInput" != "Q" || "$mainMenuInput" != "q"]
do

Advertisement

Answer

There are a couple of errors:

mainMenuInput="" 
while [ "$mainMenuInput" != "Q" ] && [ "$mainMenuInput" != "q" ]

See that variable declaration do need to be like var=value. Otherwise, bash would interpret that you want to perform the var command with = and value as parameters:

mainMenuInput="" 
             ^
             no spaces around =

In the while you need to put spaces around the brackets. Also, note that you need to use && (and) instead of || (or), because otherwise it won’t ever exit the while.

while [ "$mainMenuInput" != "Q" ] && [ "$mainMenuInput" != "q" ]
       ^                          ^^                          ^
   space                   it has to be AND               space

In fact, the condition can be rewritten to something like:

while [[ "$mainMenuInput" != [qQ] ]]
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement