shell小腳本

  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

輸出結果:

wKiom1dpUO2jHDiqAAAr7FYSqrc007.png

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

輸出結果:

wKioL1dtTc2QPjiYAAAX070RkV8648.png


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`"

輸出結果:

wKiom1dyc_mSJo_NAAAi2yh1WYM114.png

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

輸出結果:

wKiom1dyi9aykYnkAAAMe6Z0as4792.png

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 }

輸出結果:

wKioL1dzGr7hllcBAAAXQbDYzE4745.png

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

wKiom1dzIO2xqBfvAAANccLmmek987.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章