【问题标题】:EOF error in Shell ScriptingShell 脚本中的 EOF 错误
【发布时间】: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 似乎也是多余的。

标签: shell recursion fibonacci


【解决方案1】:

除了cmets中提到的缺少的"和无用的-n之外,还有

  • 第 10 行:// 不是bash 中的注释分隔符;你可以使用#

  • 第 13 行:您将 indx 输入错误为 idnx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 2014-12-11
    • 2021-03-08
    相关资源
    最近更新 更多