2013-03-04 34 views
22

Girilen bir sayı için faktöriyel bir komut veren bir komut dosyası yapıyorum, ancak çoğaltma ile bazı sorunları yaşıyorum.Değişkenler Çarpma

Not: verilir için faktöryel:

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

o tutar: 9 = 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * İşte

1 kod bu ayrılmakta çarpma Araçlar için bana her türlü hata veren:/

Şu Çıktı geçerli:

[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 

Birçok sayesinde, Saygılarımızla

+1

Size ne gibi hatalar veriyor? – iamnotmaynard

cevap

42

ana sorun result (1 kadar) başlatmak asla, bu nedenle bu:

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

bu eşdeğerdir: geçerli aritmetik ifade değil

result=$((* $input)) 

.

+0

Çok Teşekkürler Çocuklar! Bir cazibe gibi çalıştı Bir sonuç çıkardı :) – UraniumSnake

+0

@UraniumSnake: Rica ederim! Bunu duyduğuma sevindim. :-) – ruakh