【发布时间】:2015-03-22 19:39:53
【问题描述】:
我正在创建一个简单的脚本,以在 shell 脚本中使用递归来获取斐波那契数列。
程序如下:
#! /bin/bash
# Program to calculate the Fibonacci Series using Recursion
export MidNumber=2
# Define the function
fibonacci()
{
indx=$1 // Base Case
if [ "$indx" -lt "$MidNumber ]
then
echo "$idnx"
else
echo -n "$(( $(fibonacci $(($indx-2)))+$(fibonacci $(($indx-1))) ))"
fi
}
read MAXTERM
for (( i=0; i<=$MAXTERM; i++ ))
do
fibonacci $i
done
echo
我收到了错误
./FibonacciRecursion.sh: line 15: unexpected EOF while looking for matching `"'
./FibonacciRecursion.sh: line 27: syntax error: unexpected end of file
如果有人可以帮助我,请。我是 shell 脚本的新手。
【问题讨论】:
-
您的
if行中有一个不匹配的报价。编辑器中的语法突出显示应该已经向您展示了这一点。 -
而且,即使您的编辑器没有向您显示问题,SO 上突出显示的语法表明在
if [ "$indx" -lt "$MidNumber ]上]之前缺少双引号,(尽管错误是报告echo -n行上的最后一个双引号,因为这是脚本文件中的最后一个双引号。请注意,在 POSIX-ish shell 中,与 C shell 不同,字符串不限于单行。我无能为力但感觉可以通过递归调用来提高行间距。-n似乎也是多余的。