1.简单的进度条程序

lable数组 相当于进度条前进时,那个刷新的圆圈,进度条前进时显示进度,用count%显示

程序运行结果:

2.1-100之间的求和

1>用while实现 2>用for in 实现

程序运行结果:

3>递归实现

digui

function add()

{

local val=$1

local sum=0

local add1=0

local add2=0

if [ $val -eq 1 ];then

echo 1

return

fi

add1=$val

let val--

add2=$(add $val)

let sum=$add1+$add2

echo $sum

}

function main()

{

read n

add $n

}

main

程序运行结果:

4>利用seq 和bc 进行求和

seq n :生成到这个数的所有数

|bc:利用|bc可以求和

例如:

所以1-100求和可以这样写:

其中tr表示替换,seq出来的所有数都有换行符,通过tr将'\n'替换为'+'。后面的sed 是将最后一个'+'号替换为'\n',再通过bc进行求和。

3.求第n个斐波那契数

1>非递归实现

local 修饰的变量是局部变量

86 function fib()

87 {

88 local val=$1

89 while [ $val -eq 0 -o $val -eq 1 ]

90 do

91 echo 1

92 return

93 done

94 i=1

95 j=1

96 while [ $val -ge 2 ]

97 do

99 let fibn=$i+$j

100 i=$j

101 j=$fibn

102 ((val--))

103 done

105 }

106 function main()

107 {

108 read n

109 fib $n

110 echo $fibn

112 }

113 main

2>递归实现

思想:当n=1或者n=0时,return 1。因为第n个斐波那契数是第n-1个和第n-2个数之和,所以对传过来的n值先减1在递归保存值,再对n减1递归保存值,第n个就是两个保存者之和。


115 function fib()

116 {

117 local val=$1

118 local fib1=0

119 local fib2=0

120 fibc=0

121 if [ $val -eq 0 -o $val -eq 1 ];then

122 echo 1

123 return

124 fi

125 let val--

126 fib1=$(fib $val)

127 let val--

128 fib2=$(fib $val)

129 let fibc=$fib1+$fib2

130 echo $fibc

131

132 }

133

134 function main()

135 {

136 read n

137 fib $n

138

139 }

140 main

程序运行结果:



4.读取另外一文件里的数值,求出最大值、最小值、和、平均值

1 #!/bin/bash
2
3 max=0
4 min=0
5 count=0
6 sum=0
7 read name
8 cat $name | while read line
9 do
10 [ $count -eq 0 ] &&{
11 echo 'count'
12 max=$line
13 min=$line
14
15 }
16 [ $max -lt $line ] &&{
17 max=$line
18 }
19
20 [ $min -gt $line ] &&{
21 min=$line
22 }
23 let count++
24 let sum=sum+line
25 echo "max=$max" "min=$min" "sum=$sum"
26 let avg=${sum}/${count}
27 echo "avg=$avg"
28 done

程序运行结果:

cat $name 将其重定向到name文件中,然后通过行读取参数,进行判断和运算。