Erro de sintaxe: “expressão inteira esperada”

2

Estou usando o script abaixo

x=5.44
p=0
temp=$(printf "%.*f\n" $p $x)
echo $temp
if [ temp -gt 0 ]
  then
  echo "inside"
fi

e eu estou ficando abaixo da saída com erro.

5
./temp.sh: line 6: [: temp: integer expression expected
    
por Avitesh Kesharwani 13.04.2018 / 18:18

1 resposta

11

Você precisa usar $ para o shell expandir temp (conforme seu script é escrito, você está tentando comparar a string literal temp com o inteiro 0 ). Você também deve citá-lo:

x=5.44
p=0
temp=$(printf "%.*f\n" $p $x)
echo "$temp"
if [ "$temp" -gt 0 ]
then
  echo "inside"
fi

Se você estiver usando o bash, uma maneira melhor de fazer isso seria usar a expressão aritmética do bash da seguinte forma:

x=5.44
p=0
temp=$(printf "%.*f\n" $p $x)
echo "$temp"
if ((temp>0)); then
  echo "inside"
fi

Dentro da expressão aritmética ((…)) você não precisa de $ para expansão e não pode citar.

    
por 13.04.2018 / 18:20