【问题标题】:bash shell script fibonacci not showing value 2 after 0 1 1?bash shell脚本斐波那契在0 1 1之后没有显示值2?
【发布时间】:2013-12-09 03:06:52
【问题描述】:

我正在为斐波那契写一个 bash 脚本,它没有打印 0 1 1 之后的值。 在 0 1 1 之后不打印“2”。 代码如下。

echo "enter the number"
read n
a=0
b=1
c=0
echo $a
echo $b
while [ $b -le $n ]
do
  c=`expr $a + $b`
  echo $c
  b=`expr $b + 1`
  a=$b
  b=$c
done

【问题讨论】:

    标签: bash shell fibonacci


    【解决方案1】:

    在 bash 中,不要在赋值左侧使用美元符号。

    $c=$a+$b

    应该是

    c=$a+$b

    但它可能仍然没有达到你想要的效果,试试

    c=$((a+b))
    

    改为。

    【讨论】:

    • 我用这个 c=$a+$b 尝试了一个简单的加法程序,它可以工作。那么,为什么说上面的代码行不通呢。
    • @phpbeginner 如果您尝试过,您应该已经看到它不 工作。它不添加数字,它创建一个内容为“0+1”的字符串。你可以做的是写let c=$a+$b(或choroba在他的回答中写的)。
    【解决方案2】:
    echo "enter the number"
    read n
    a=0
    b=1
    c=0
    while [ $b -le $n ]
    do
      c=`expr $a + $b`
      echo $c ' = ' $a ' + '  $b
      a=$b
      b=$c
    done
    

    【讨论】:

    • 错误:fib.sh: 8: [: Illegal number: 0+1
    • 60 适合我。你确定你使用的是 bash shell 吗?试试 echo $SHELL
    • 是的 $SHELL 说 /bin/bash
    • 好吧,那我不确定你的问题是什么。确保您使用的是反引号。 expr $a + $b 不是'expr $a + $b'
    • 是的,我知道反引号。
    猜你喜欢
    • 1970-01-01
    • 2015-05-30
    • 2013-06-12
    • 2016-02-19
    • 2017-11-18
    • 1970-01-01
    • 2011-02-16
    • 2015-06-26
    • 2015-02-09
    相关资源
    最近更新 更多