1、进度条

代码:

Shell脚本编程练习

运行过程及结果:

Shell脚本编程练习

Shell脚本编程练习


2、1到100的求和

1、

代码:

#!/bin/bash 
                                                                             
sum=0
for i in {1..100}
do
    let sum+=i
done
echo $sum

运行结果:

5050

2、

代码:

#!/bin/bash 

i=1 
sum=0
while [ $i -le 100 ]
do  
    sum=$(( sum + i ))
    (( i++ ))                                                                   
done
echo $sum


运行结果:

5050

3、

代码:

read val 
       
i=1 
sum=""
ret=0
while [ $i -le 100 ]
do  
    [ $i == 100 ] && {
        sum=${sum}${i}
        let ret+=$i
        break
    }
    sum=${sum}${i}+
    let ret+=$i
    (( i++ ))
done                                                                            
echo $sum=${ret}

运行结果:

Shell脚本编程练习

4、递归实现

代码:

r#!/bin/bash
add=""
ret=0
function sum(){
    local val=$1
    [  $val != 1 ]||{
        let ret+=1
        add=`expr ${add}$1=`
        return 
    }   
    add=`expr ${add}$1+`
    let ret+=$val
    (( val-- ))
    sum $val
}
 
read var 
sum $var 
echo ${add}$ret

两次运行结果:

Shell脚本编程练习

5.利用工具

Shell脚本编程练习

Shell脚本编程练习


3、从另一个文件读取数据,找出最大、最小及平均值

代码:

#!/bin/bash 
max=0
min=0                                                                           
sum=0
avg=0
count=0
 
while read line
do  
    [ "$line" ==  "" ] &&{ 
        continue
    }   
    [ $count == 0 ] && { 
        max=$line
        min=$line
    }   
    [ $max -lt $line ] && {
         max=$line
    }   
    [ $min -gt $line ] && {
        min=$line
    }   
    let sum=${sum}+${line}
    (( count++ ))
done<math_file
printf "max: %d,min: %d,agv: %s\n" "${max}" "${min}" "`echo "ibase=10;scale=2;${sum}/ ${count}" | bc`"

运行结果:

Shell脚本编程练习


4、斐波那契数列

1、

代码:

#!/bin/bash
         
read n   
         
arr=(1 1)
count=2  
function fib(){                                                                 
    local n=$1
    if [ $1 -le 1 ];then 
        return 1
    fi   
    while [ $count -le $1 ]
    do   
        let arr[count]=arr[count-1]+arr[count-2]
        (( count++ ))
    done 
}        
         
fib $n   
echo sum=${arr[$n]}

运行结果:

Shell脚本编程练习

(该结果忽略了第一项)

2、

代码:

#!/bin/bash
read n
                                                                                
arr=(1 1)
 
if [ n == 1 ];then 
    echo ${arr[n]}
else
    for (( i=2;i<=${n};i++ ))
    do  
        let arr[i]=arr[i-1]+arr[i-2]
    done
fi
echo sum=${arr[n]}

运行结果:

同上

3、递归实现(效率较低)

代码:

read n
 
fib1=0
fib2=0
fib_ret=0
function fib(){
    local val=$1
    if [ $val -eq 0 -o $val -eq 1 ];then
         echo 1
#        return //此处的return可有可无 
    else
        fib1=$(fib $(($val-2)))
        fib2=$(fib $(($val-1))) 
        let fib_ret=fib1+fib2
        #fib_ret=$(( ${fib1} + ${fib2} ))
        echo ${fib_ret}
    fi  
}                                                                               
 
fib $n

运行结果:

结果同上


其实我们还可以把代码写的更加简洁一点,但本质上和上面是一样的

代码

read n
 
fib1=0
fib2=0
fib_ret=0
function fib(){
    local val=$1
    if [ $val -eq 0 -o $val -eq 1 ];then
        echo 1
#       return  
    else
        echo $(( $(fib $(($1-2))) + $(fib $(($1-1))) ))
    fi  
}
                                                                                
fib $n

运行结果:

结果同上



5、字符串截取

代码:

#!/bin/bash 
 
while read line 
do                                                                              
    echo -n `echo $line | cut -c 9-`//使用cut工具截取
    echo -n `echo $line | cut -c 5-8 | tr [a-z] [A-Z]`
    echo `echo $line | cut -c -4`
done<cut_file

运行结果:

Shell脚本编程练习



《完》