2013-03-04 22 views
22

Tôi đang tạo một kịch bản cung cấp giai thừa cho một số được chèn, nhưng tôi đang gặp một số vấn đề với phép nhân.Biến Nhân

Lưu ý: giai thừa cho được cho bởi: 9 = 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

Dưới đây là mã của tôi:

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

nó giữ đem lại cho tôi lỗi của tất cả các loại dùng cho máy nhân khác nhau:/

Hiện nay đầu ra là:

[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 

Nhiều Cảm ơn, 01.235.Trân trọng

+1

Lỗi nào cung cấp cho bạn? – iamnotmaynard

Trả lời

42

Vấn đề chính là bạn không bao giờ khởi result (để 1), vì vậy đây:

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

tương đương với điều này:

result=$((* $input)) 

mà không phải là một biểu thức số học có giá trị .

+0

Nhiều người cảm ơn! Nó hoạt động như một nét duyên dáng mà tôi đã khởi tạo kết quả :) – UraniumSnake

+0

@ UraniumSnake: Bạn được chào đón! Rất vui khi nghe điều này. :-) – ruakh

Các vấn đề liên quan