“muitos argumentos na declaração [(teste)”

0

este é o meu primeiro script "if-else" no linux. Dá o erro em [: muitos argumentos

Código:

n=0
if [ $n % 2 -eq 0 ]
then
  echo "even number"
fi 

Como corrigir isso.

    
por Pradeep 02.02.2015 / 15:32

1 resposta

3

A matemática em bash deve ser executada em arithmetic context . Em sua implementação atual, você está fornecendo "$ n", "%" e "2" como argumentos para [ , que não executa matemática. Aqui está um exemplo que executa o contexto aritmético de matemática n:

if [ "$((n % 2))" -eq 0 ]

No exemplo acima, os resultados do $(()) são expandidos pelo shell antes de serem vistos pelo comando [ . Você pode simplificar isso removendo a chamada para [ :

if (( (n % 2) == 0 ))
    
por 02.02.2015 / 15:40