(一)寫以下所示數列
shell
[root@localhost ding1]# bash 5.sh bash
2/1ide
3/2it
5/3class
8/5awk
13/8變量
21/13sed
34/21循環
55/34方法
89/55
144/89
233/144
shell代碼以下:
#!/bin/bash >aa >bb echo 1 2 | xargs -n1 >aa for i in `seq 20` do a=`cat aa | sed -n ''$i'p'` b=`cat aa |tail -1` echo $(($a+$b)) >>aa c=`cat aa | sed -n ''$(($i+1))'p'` echo $c/$a >>bb done cat bb
計算結果以下,用awk 計算
[root@localhost ding1]# bash 5.sh |awk -F '/' '{a+=$1/$2;print a}'
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 for i in `seq 20` do echo $b/$a #shell 解析的時候是從上往下一步步來的,因此順序是很是重要的。 c=$((a+b)) a=$b 和 b=$c不能顛倒過來 a=$b b=$c done 第一次循環: 2/1 c=3 a=2 b=3 第二次循環: 3/2 c=5 a=3 b=5 第三次循環: 5/3 c=8 a=5 b=8 ........
若是打印一個這樣的數列是否是也會了
例如:
1
2
3
5
8
........
shell 代碼以下:
#!/bin/bash a=1 b=2 echo 1 for i in `seq 20` do echo $b c=$((a+b)) a=$b b=$c done
輸出以下:
[root@localhost ding1]# bash 6.sh
1
2
3
5
8
13
21