Erro de sintaxe aritmética com uma variável numérica

0

Estou tendo dificuldades com um erro de sintaxe aritmética.

Estou lendo o nome dos arquivos de texto na linha de comando e conto o número das linhas de cada arquivo.

NUM=$(wc -l "$text") 

e depois quero verificar se NUM é ímpar ou não.

Então eu coloquei

REMAINDER=$(( $NUM % 2 ))
if [ $REMAINDER -ne 0 ] ; then 
    echo "Odd number"
fi

No entanto, parece que há um problema com

REMAINDER=$(( $NUM % 2 ))

$ NUM não parece ser considerado um número, mas um arquivo ".txt". Quando eu verifiquei NUM por si só e funcionou bem ...

    
por pigletwithcurls 24.02.2016 / 02:22

1 resposta

4

Se você imprimir $NUM , depois

NUM=$(wc -l "$text") 

você provavelmente verá (no Linux) um número e um nome de arquivo na mesma linha, com algum espaço em branco.

Por exemplo:

1842 basic.c

Essa string não é um número, e você normalmente leria apenas o primeiro token com sua escolha de shell / sed / awk, etc., para usar esse como um número.

@steeldriver sugere isso para obter apenas o número:

NUM=$(wc -l < "$text")

que funciona (testado com o Debian).

    
por 24.02.2016 / 02:25