一、计算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

结果如下:

wKioL1dqK02xuCRZAAA3CiR00Aw232.png


二、费谱那锲数

(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]}

结果如下:

wKioL1dqK-mA3pp0AABjZ0Jm63o249.png

(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

结果如下:

wKiom1dqLCiCAhKaAABzYuXY2QQ931.png


三、字符串拼接

栗子代码:

  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

结果如下:

wKioL1dqLHfBjytnAABos7Hqmt0812.png


四、模拟一个简单的进度条

栗子代码:

  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"

结果如下:

wKioL1dqLMmzIYz8AABTc0iDwNo277.png


wKioL1dqLM_ifON8AABBS2lXiYI158.png


五、求文件里数字的最大最小值

栗子代码:

  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

结果如下:

wKioL1dqLSnzoGYVAABC52XgLoo621.png