shell 整理(36)===写斐波那契数列

前端之家收集整理的这篇文章主要介绍了shell 整理(36)===写斐波那契数列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

(一)写如下所示数列


[root@localhost ding1]# bash 5.sh

2/1

3/2

5/3

8/5

13/8

21/13

34/21

55/34

89/55

144/89

233/144


shell代码如下:

  1. #!/bin/bash
  2.  
  3. >aa
  4. >bb
  5. echo12|xargs-n1>aa
  6.  
  7. foriin`seq20`
  8. do
  9. a=`cataa|sed-n''$i'p'`
  10. b=`cataa|tail-1`
  11. echo$(($a+$b))>>aa
  12. c=`cataa|sed-n''$(($i+1))'p'`
  13. echo$c/$a>>bb
  14. done
  15. catbb


计算结果如下,用awk 计算

  1. [root@localhostding1]#bash5.sh|awk-F'/''{a+=$1/$2;printa}'

2

3.5

5.16667

6.76667

8.39167

10.0071

11.6261

13.2437

14.8619

16.4799

18.098

19.716

21.334

22.9521

24.5701

26.1881

27.8062

29.4242

31.0422

32.6603

[root@localhost ding1]#



上面的代码输出文本,略微有点复杂,我补充第二中方法

shell 代码如下:

  1. #!/bin/bash
  2.  
  3. a=1#定义一个变量a和b
  4. b=2
  5.  
  6. foriin`seq20`
  7. do
  8. echo$b/$a#shell解析的时候是从上往下一步步来的,所以顺序是非常重要的。
  9. c=$((a+b))a=$bb=$c不能颠倒过来
  10. a=$b
  11. b=$c
  12. done
  13.  
  14. 第一次循环:2/1c=3a=2b=3
  15. 第二次循环:3/2c=5a=3b=5
  16. 第三次循环:5/3c=8a=5b=8
  17. ........


如果打印一个这样的数列是不是也会了

例如:

1

2

3

5

8

........

shell 代码如下:

  1. #!/bin/bash
  2.  
  3. a=1
  4. b=2
  5. echo1
  6. foriin`seq20`
  7. do
  8. echo$b
  9. c=$((a+b))
  10. a=$b
  11. b=$c
  12. done


输出如下:

[root@localhost ding1]# bash 6.sh

1

2

3

5

8

13

21

猜你在找的Bash相关文章