bash: expressão inteira esperada

4

Eu tenho um arquivo out.csv Eu tenho que verificar se o nome inserido pelo usuário existe no arquivo (separado por vírgula) ou não. Estou tomando nome usando leitura, mas ao verificar a igualdade estou recebendo erro

    IFS=","
    while read tname tnum
        do
            if [ $tname -eq $name ]; then
                flag=1
                break
            fi
        done < out.csv
    echo "$ch"
    
por user2179293 08.09.2013 / 05:25

1 resposta

11

Você está recebendo este erro porque está tentando comparar uma string usando operadores de igualdade destinados a números inteiros, -eq , -ne , -gt e similares são funções inteiras.

Para comparar strings use = para comparar por igualdade OU != para comparar por não igualdade.

Verifique este para saber mais sobre os operadores de comparação.

if [ $tname -eq $name ]; then

deve ser alterado para:

if [ "$tname" = "$name" ]; then

(lembre-se também de citar suas variáveis).

    
por 08.09.2013 / 05:31