Subtração com valores em uma matriz

0

Estou usando uma matriz para tentar subtrair. No entanto, quando o meu script me fornece o total do meu array com um sinal negativo na frente dele. Alguma sugestão?

elif [ "$OP" = "Subtraction" ]; then
    echo "Please enter the number of values you would like to perform $OP"
    read num
        while [[ $num -gt $i ]]; do
            echo "Enter your value"
            read value
            let total=$total-$value
            let valuearr[$i]=$value
            let i=$i+1
        done
        echo "You entered ${valuearr[*]}, and asked me to perform $OP. The answer is $total."
    
por linuxnewbie2016 03.08.2016 / 00:03

1 resposta

2

Se eu definir i=1 e total=0 antes da mão e alterar o teste para -ge , parece funcionar:

OP=Subtraction
if [ "$OP" = "Subtraction" ]; then
    echo "Please enter the number of values you would like to perform $OP"
    read num
    i=1
    total=0
        while [[ $num -ge $i ]]; do
            echo "Enter your value"
            read value
            let total=$total-$value
            let valuearr[$i]=$value
            let i=$i+1
        done
        echo "You entered ${valuearr[*]}, and asked me to perform $OP. The answer is $total."
fi

$ bash x
Please enter the number of values you would like to perform Subtraction
3
Enter your value
1
Enter your value
2
Enter your value
4
You entered 1 2 4, and asked me to perform Subtraction. The answer is -7.

Por não definir i=1 , você perderá um elemento da saída ${valuearr[*]} . total=0 é apenas um código bom, caso a variável tenha sido usada em outro lugar.

Claramente 0-1-2-4 == -7 e então o resultado está correto.

    
por 03.08.2016 / 00:15