Você precisa adicionar espaços em torno da condição de while
:
while [ "$INPUT_STRING" != "bye" ]
Isso pode parecer um pouco estranho para pessoas com experiência em programação, mas as razões são estas:
-
while
espera uma lista de comandos. O fluxo de controle depende do status de saída deste comando: desde que seja zero, o corpo continua a ser executado. -
[ expression ]
é uma forma alternativa detest expression
. Aqui,test
é um comando que avalia a expressão e retorna seu valor na forma do status de saída do comando. Certifique-se de retornar um status de saída zero se a expressão (logicamente) for avaliada como um valortrue
booleano, para que possa ser usada nos comandosif
ewhile
. -
Na verdade, os arquivos
test
e[
são arquivos executáveis no linux (normalmente eles são encontrados em/usr/bin
). No entanto, alguns shells, comobash
, usam comandos internos com os mesmos nomes. -
Como
test
e[
são (tecnicamente) comandos simples, seus argumentos devem ser separados do nome do comando e entre si com um ou mais caracteres brancos.