shell 整理(36)===写斐波那契数列
发布时间:2020-12-15 16:12:57 所属栏目:安全 来源:网络整理
导读:(一)写如下所示数列 [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代码如下: #!/bin/bashaabbecho12|xargs-n1aaforiin`seq20`doa=`cataa|sed-n''$i'p'`b=`cataa|tail-1`echo$(($a+$b))aac=`cata
(一)写如下所示数列 [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代码如下: #!/bin/bash >aa >bb echo12|xargs-n1>aa foriin`seq20` do a=`cataa|sed-n''$i'p'` b=`cataa|tail-1` echo$(($a+$b))>>aa c=`cataa|sed-n''$(($i+1))'p'` echo$c/$a>>bb done catbb 计算结果如下,用awk 计算 [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 代码如下: #!/bin/bash a=1#定义一个变量a和b b=2 foriin`seq20` do echo$b/$a#shell解析的时候是从上往下一步步来的,所以顺序是非常重要的。 c=$((a+b))a=$b和b=$c不能颠倒过来 a=$b b=$c done 第一次循环:2/1c=3a=2b=3 第二次循环:3/2c=5a=3b=5 第三次循环:5/3c=8a=5b=8 ........ 如果打印一个这样的数列是不是也会了 例如: 1 2 3 5 8 ........ shell 代码如下: #!/bin/bash a=1 b=2 echo1 foriin`seq20` do echo$b c=$((a+b)) a=$b b=$c done 输出如下: [root@localhost ding1]# bash 6.sh 1 2 3 5 8 13 21 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |