簡體   English   中英

bash腳本上的奇怪錯誤

[英]strange errors on bash script

警告:我最近才剛開始學習bash,並嘗試做一個可計算項的遞歸函數...所以...

x0 = 0 x1 = 1 xm = 3 * xm-1-2 * xm-2

我到目前為止編寫的函數是:

#!/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 "=")

不太確定您的計算結果,但是您在語法上清理的基本腳本就是這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM