2013-03-04 14 views
22

Sto creando uno script che fornisce il fattoriale per un numero inserito, ma sto riscontrando alcuni problemi con la moltiplicazione.Moltiplicazioni di variabili

Nota: il fattoriale per è dato da: 9 = 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

Ecco il mio codice:

#!/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 

si mantiene mi dà errori di tutti i tipi per diferent tecniche di moltiplicazione:/

Attualmente l'output è:

[email protected] ~/Á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 

Molte grazie, migliori saluti

+1

Quali errori ti dà? – iamnotmaynard

risposta

42

Il problema principale è che non si inizializza result (a 1), quindi questo:

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

è equivalente a questo:

result=$((* $input)) 

che non è un'espressione aritmetica valida .

+0

Molte grazie ragazzi! Ha funzionato come un fascino che ho inizializzato risultato :) – UraniumSnake

+0

@ UraniumSnake: Prego! Sono contento di sentirlo. :-) – ruakh

Problemi correlati