Insira dois números e adicione-os quando "a" for digitado, subtraia quando "s" for digitado

1

Então, estou tendo um pequeno problema com esse código. Quando tento executar, recebo a mensagem     linha 12: 0: comando não encontrado

#!/bin/bash

let results=0;

echo "First number please"

read num1

echo "Second mumber"

read num2

echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"

read Op

if [ "$Op" = "a" ]

then

results=$((num1+num2))

elif [ "$Op" = "s" ]

then

results=$((num1-num2))

elif [ "$Op" = "d" ]

then

results=$((num1/num2))

elif [ "$Op" = "m" ]

then

results=$((num1*num2))

fi
    
por Aizzle 28.09.2014 / 02:06

3 respostas

1

Eu mudei o seu shell script para o seguinte código e ele funciona, mesmo assim a divisão por zero ainda existe:

#!/bin/bash

let results=0;
echo "First number please"
read num1
echo "Second number"
read num2
echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"
read Op
if [ "$Op" = "a" ] ; then
    results='echo "$num1+$num2" |bc '
elif [ "$Op" = "s" ]; then 
    results='echo "$num1-$num2" |bc '
elif [ "$Op" = "d" ]; then 
    results='"$num1/$num2" |echo bc'
elif [ "$Op" = "m" ] ; then 
    results='echo "$num1*$num2"|bc'
else 
    echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"
    read Op
fi;
echo $results
    
por 28.09.2014 / 02:24
2

elif não é uma palavra-chave válida como a última outra. Use:

If *condition 1*
    #Do Something
elif *condition 2*
    #Do Something Else
else
    #Do this as a last resort
fi

An Else If requer um else quando não está convertendo para uma string como na resposta bc.

Referência: 4 Bash Se Exemplos de Instruções (Se então fi, Se então mais fi, Se elif else fi, aninhado se)

    
por 28.09.2014 / 02:29
0

Eu terminei. Eu tive que remover o |bc porque não era compatível com o terminal que usei por algum motivo. E eu tive que colocar a linha de resultado neste formato $(($num1+$num2)) porque não estava me dando uma resposta. Tudo o que fazia antes era exibir as entradas, não o resultado aritmético. O código final está abaixo:

let results=0;
echo "First number please"
read num1 
echo "Second mumber"
read num2
echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"
read Op
if [ "$Op" = "a" ] ; then
    results="$(($num1+$num2))" 
elif [ "$Op" = "s" ]; then
    results="$(($num1-$num2))"
elif [ "$Op" = "d" ]; then
    results="$(($num1/$num2))"
elif [ "$Op" = "m" ] ; then
    results="$(($num1*$num2))"
else
    echo "Enter operation a=add, s=subtract, m=multiply, and d=divide"
    read Op
fi;
echo "$results"
    
por 28.09.2014 / 05:45