variable script multiplicar flotante float decimals decimales arithmetic bash multiplication factorial

bash - script - Multiplicacion de variables



multiplicar variable bash (1)

El problema principal es que nunca inicializa el result (a 1 ), por lo que esto:

result=$(($result * $input))

es equivalente a esto:

result=$(( * $input))

que no es una expresión aritmética válida.

Estoy haciendo un script que da el factorial para un número insertado, pero estoy teniendo algunos problemas con la multiplicación.

Nota: el factorial para viene dado por: 9! = 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

Aquí está mi código:

#!/bin/bash echo "Insert an Integer" read input if ! [[ "$input" =~ ^[0-9]+$ ]] ; then exec >&2; echo "Error: You didn''t enter an integer"; exit 1 fi function factorial { while [ "$input" != 1 ]; do result=$(($result * $input)) input=$(($input-1)) done } factorial echo "The Factorial of " $input "is" $result

Me sigue dando errores de todo tipo para diferentes técnicas de multiplicación: /

Actualmente la salida es:

joaomartinsrei@joaomartinsrei ~/Área de Trabalho/Shell $ ./factorial.sh Insert an Integer 3 ./factorial.sh: line 15: * 3: syntax error: operand expected (error token is "* 3") The factorial of 3 is

Muchas Gracias y Saludos cordiales