O que há de errado com 'if ($ num1 -eq 0) || ($ num2-eq 0) 'em um script de shell bash?

1

Meu código:

#!/bin/bash
read num1
read num2
if ($num1 -eq 0) || ($num2 -eq 0) 
 then exit
else 
 echo "$(($num1+$num2))"
 echo "$(($num1-$num2))"
 echo "$(($num1*$num2))"
 echo "$(($num1/$num2))"
fi

Quando executo este código, recebo esses erros:

./txt: line 4: 1: command not found
./txt: line 4: 1: command not found

Não sei por que esses erros aparecem quando eu insiro: num1 = <any number> e num2 = <any number>

    
por Bitsized 23.12.2016 / 23:48

1 resposta

4

A sintaxe está errada. Você precisa do dobro de (( )) combinado com == ou single / double [ ]

Estes funcionam ok:

if [ $num1 -eq 0 ] || [ $num2 -eq 0 ] #mind the gap between brackets and vars.... 

ou

if (($num1==0)) || (($num2==0))

A sintaxe parêntese dupla pode ser usada apenas para números acc para basear a lógica de expansão aritmética.

Os colchetes simples ou duplos podem ser usados para strings ou variáveis numéricas.

    
por 23.12.2016 / 23:56