2012-03-26 120 views
0

警告奇怪的错误* XM-1 - 2 * XM-2在bash脚本

我写了到目前为止的功能是:

#!/bin/bash 
calculate() 
{ 
if [ $1 -eq 0 ] 
then 
echo "0" 
fi 
if [ $1 -eq 1 ] 
then 
echo "1" 
fi 
if [ $1 -ge 1 ] 
then 
let var1 = `calculate [ $1-1 ]`; 
let var2 = `calculate [ $1-2 ]`; 
let var3 = 3*var1-2*var2; 
echo var3 
fi 
} 
calculate 3 

但我得到一些奇怪的错误...不知道我是否正确地做到了......能任何人告诉我是什么原因导致这些问题,并纠正我的代码,使其工作?非常感谢。

错误:

TP1p1.sh: line 4: [: [: integer expression expected 
TP1p1.sh: line 8: [: [: integer expression expected 
TP1p1.sh: line 12: [: [: integer expression expected 
TP1p1.sh: line 14: let: =: syntax error: operand expected (error token is "=") 
TP1p1.sh: line 4: [: [: integer expression expected 
TP1p1.sh: line 8: [: [: integer expression expected 
TP1p1.sh: line 12: [: [: integer expression expected 
TP1p1.sh: line 15: let: =: syntax error: operand expected (error token is "=") 
TP1p1.sh: line 16: let: =: syntax error: operand expected (error token is "=") 

回答

3

嘛不知道你的计算,但你的语法清理基地脚本是这一个:

#!/bin/bash 
calculate() { 
if [ $1 -eq 0 ]; then 
    echo -n "0" 
elif [ $1 -eq 1 ]; then 
    echo -n "1" 
elif [ $1 -ge 1 ]; then 
    var1=$(calculate $(($1-1))) 
    var2=$(calculate $(($1-2))) 
    var3=$((3*(var1-2)*var2)) 
    echo $var3 
fi 
} 
calculate 5 
+0

它的工作只是为5,3这表明-6和6显示0. :-( – FinalDestiny 2012-03-26 22:05:20

+0

对不起,你的代码是正确的,但var3 = $((3 *(var1-2)* var2)) 是错误的,它应该是$(((3 * var1) - (2 * var2))) – FinalDestiny 2012-03-26 22:44:20

+0

无论如何,你们帮助我学到了很多东西,非常感谢。 – FinalDestiny 2012-03-26 22:44:58