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.