求1-100的和
a. 非递归
1 #!/bin/bash
2 sum=0
3 str=""
4 for i in {1..100}
5 do
6 let sum+=i
7 str+="$i+"
8 done
9 echo ${str%+}=$sum输出结果:
b. 递归
29 function fun_sum()
30 {
31 num=$1
32 sum=0
33 if [ ${num} -le 1 ];then
34 echo 1
35 return
36 fi
37 let num--
38 let sum=$1+$( fun_sum $num)
39 echo ${sum}
40 }
41 function main()
42 {
43 read n
44 sum=$(fun_sum $n )
45 echo "${sum}"
46 }
47 main输出结果:
2.求出一个文件中数据的最大值、最小值和平均值,精度为2
1 #!/bin/bash
2 count=0
3
4 while read line
5 do
6 let count++
7 let sum+=$line
8 if [ $count -eq 1 ];then
9 max=$line
10 min=$line
11 ave=0
12 fi
13 [ $max -lt $line ] && max=$line
14 [ $min -gt $line ] && min=$line
15 done<file
16 echo "max=$max"
17 echo "min=$min"
18 echo "ave=`echo "base=10; scale=2; ${sum}/${count}" | bc`"输出结果:
3.Fib
a. 非递归(循环)
1 #!/bin/bash
2 function fib()
3 {
4 n=$1
5 a=1
6 b=1
7 if [ ${n} -eq 1 -o ${n} -eq 2 ];then
8 echo 1
9 return
10 fi
11 while [ ${n} -gt 2 ]
12 do
13 let c=a+b
14 a=$b
15 b=$c
16 let n--
17 done
18 echo ${c}
19 return
20 }
21 function main()
22 {
23 read n
24 fib $n
25 }
26 main输出结果:
b. 递归
function fib()
24 {
25 n=$1
26 if [ $n -eq 1 -o $n -eq 2 ];then
27 echo 1
28 return
29 fi
30 let n--
31 val1=$(fib $n)
32 let n--
33 val2=$(fib $n)
34 let ret=$val1+$val2
35 #ret=$(fib (${n}-1))+$(fib (${n}-2)) //为什么这样不行
36 echo $ret
37 return
38 }输出结果:
4.将一个文件中每一行的字符串进行转换,例如将“123abc456”转换为“456ABC123”
1 #!/bin/bash
2 while read line
3 do
4 # num1=$(echo $line | cut -c -3) #方法一
5 # num2=$(echo $line | cut -c 4-6)
6 # num3=$(echo $line | cut -c 7-)
7 num1=${line:0:3} #方法一
8 num2=${line:3:3}
9 num3=${line:6:3}
10 eval echo "${num3}${num2}${num1} | tr [a-z] [A-Z]"
11 done<file0本文出自 “sunshine225” 博客,请务必保留此出处http://10707460.blog.51cto.com/10697460/1793853
原文地址:http://10707460.blog.51cto.com/10697460/1793853