Como outros afirmaram, você não deve usar a comparação -ne
integer para comparar strings. Em vez disso, use =/!=
em test
[
colchetes ]
. Ainda assim, mesmo que seja frágil na melhor das hipóteses - as strings devem corresponder exatamente, e ''
faz igual a ''
. Geralmente, é melhor lidar com case
s nesse contexto:
set --
while read word
case $?$#$word in
($?$#[Nn][Ee][Xx][Tt]) ! :;;
([!0]*|05*) ! break ;;esac
do set '' "$@"
done
Forneceu um valor padrão para $IFS
(que vale a pena investigar se você planeja fazer o shell read
s) , que deve funcionar para qualquer valor superior / inferior de next
< em> (se você precisar) e evitar que o loop seja executado sem fim.