shell--简单练习题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell--简单练习题相关的知识,希望对你有一定的参考价值。

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

结果如下:

技术分享





本文出自 “GREEN” 博客,请务必保留此出处http://green906.blog.51cto.com/10697569/1791715

以上是关于shell--简单练习题的主要内容,如果未能解决你的问题,请参考以下文章

编写一个弹出式菜单的shell程序,利用函数实现简单的菜单功能,n的值由键盘输入:

shell练习题

Linux编程_Shell脚本练习题

shell脚本练习题

Shell脚本练习题

shell综合练习题(图文并茂代码清单)