一、计算1+2+...+100的值
采用一般方法:
#! /bin/bash
sum=0
res=""
num=1
for ((; num<=100; num++))
do
let sum+=num
[ $num -eq 100 ]&&{
res=${res}${num}
break
}
res=${res}${num}'+'
done
echo ${res}=${sum}
结果如下:
使用递归方法:
1 #! /bin/bash
2
3 read num
4
5 sum=0
6 function add()
7 {
8 num1=$num
9 [ $num -le 1 ]&&{
10 echo "$num"
11 return
12 }
13
14 let num--
15 tmp=$(add $num)
16 let sum=$num1+$tmp
17 echo "$sum"
18 }
19
20 add $num
结果如下:
二、费谱那锲数
(1)采用数组方法:(保存了算出的每个数)
1 #! /bin/bash
2
3 read val
4 arr[0]=1
5 arr[1]=1
6 i=0
7 while [ $i -le $val ]
8 do
9 let arr[i+2]=arr[i+1]+arr[i]
10 let i++
11 done
12
13 echo ${arr[val]}
结果如下:
(2)使用递归方法:(效率低)
1 #! /bin/bash
2
3 read num
4
5 function fib()
6 {
7 [ $num -le 1 ]&&{
8 echo "$num"
9 return
10 }
11
12 let --num
13 val1=$(fib $num)
14 let --num
15 val2=$(fib $num)
16 let val=$val1+$val2
17 echo "$val"
18 }
19
20 fib num
结果如下:
三、字符串拼接
栗子代码:
1 #! /bin/bash
2
3 while read line
4 do
5 str1=$(echo $line|cut -c 1-3)
6 str2=$(echo $line|cut -c 4-6|tr '[a-z]' '[A-Z]')
7 str3=$(echo $line|cut -c 7-9)
8 echo ${str3}${str2}${str1}
9 done<file
结果如下:
四、模拟一个简单的进度条
栗子代码:
1 #! /bin/bash
2
3 val=100
4 str=""
5 arr=('|' '/' '-' '\\')
6 for((i=1; i<=val; i++))
7 do
8 str+="#"
9 let index=i%4
10 printf "[%-100s] [${i}%%] [${arr[$index]}] \r" "${str}"
11 sleep 0.5
12 done
13 printf"\n"
结果如下:
五、求文件里数字的最大最小值
栗子代码:
1 #! /bin/bash
2
3 count=0
4 while read line
5 do
6 let count++
7 [ $count -eq 1 ]&&{
8 min=$line
9 max=$line
10 }
11 [ $max -lt $line ]&&{
12 max=$line
13 }
14
15 [ $min -gt $line ]&&{
16 min=$line
17 }
18 done<file
19 echo min=$min,max=$max
结果如下:
转载于:https://blog.51cto.com/green906/1791715