2013-03-04 7 views
22

Ich mache ein Skript, das die Fakultät für eine eingefügte Zahl gibt, aber ich habe einige Probleme mit der Multiplikation.Variablen Multiplikation

Hinweis: die Fakultät für gegeben ist durch: 9 = 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

Hier ist mein Code:

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

hält gibt mir Fehler aller Art für diferent Multiplikation Technik:/

zur Zeit der Ausgabe ist:

[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 

Vielen Dank, Mit freundlichen Grüßen

+1

Welche Fehler gibt es? – iamnotmaynard

Antwort

42

Das Hauptproblem ist, dass man nie result (zu 1) initialisieren, so folgt aus:

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

entspricht dies:

result=$((* $input)) 

, die kein gültiger arithmetischer Ausdruck ist .

+0

Vielen Dank Jungs! Es funktionierte wie ein Charme ich initialisierte Ergebnis :) – UraniumSnake

+0

@UraniumSnake: Gern geschehen! Freut mich, das zu hören. :-) – ruakh