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:
-
whileespera 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 valortruebooleano, para que possa ser usada nos comandosifewhile. -
Na verdade, os arquivos
teste[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
teste[são (tecnicamente) comandos simples, seus argumentos devem ser separados do nome do comando e entre si com um ou mais caracteres brancos.