странные ошибки в скрипте bash - PullRequest
0 голосов
/ 27 марта 2012

Предупреждение: я только недавно начал изучать 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 "=")

1 Ответ

3 голосов
/ 27 марта 2012

Ну, вы не уверены в своих вычислениях, но ваш синтаксически очищенный базовый сценарий такой:

#!/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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...