码迷,mamicode.com
首页 > 系统相关 > 详细

shell小脚本

时间:2016-06-29 11:37:13      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:shell   function   

  1. 求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

shell小脚本

标签:shell   function   

原文地址:http://10707460.blog.51cto.com/10697460/1793853

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!