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

shell脚本练习题

时间:2016-06-24 20:42:42      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:shell

一、用shell脚本实现进度条

#!/bin/bash
function proc()
  4 {
  5     count=0
  6     bar=""
  7     lable=("|" "/" "-" "\\")
  8     while [ $count -le 100 ]
  9     do
 10             let index=count%4
 11             printf "[\033[1m\033[1;34m%-101s\033[0m] [%d%%] [%c]\r" "$bar" "$count" "${lable[$index]}"
 12             bar=${bar}‘#‘
 13             (( count++ ))
 14             sleep 0.05
 15     done
 16     #   printf "\n"
 17 }
 18 proc

技术分享

二、求1-100的和(非递归)

 #!/bin/bash
 20  sum=0
 21  str=" "
 22 for i in {1..100}
 23 do
 24     let sum+=i
 25     [ $i -eq 100 ] && {
 26         str=${str}${i}
 27         break
 28     }
 29     str=${str}${i}‘+‘
 30 #((sum=sum+i))
 31 done
 32 #echo $sum
 33 echo "$str=$sum"

技术分享

三、1-100的求和(递归)

#!/bin/bash
function sum()
  4 {
  5     local val=$1
  6     local res
  7     if [ $val -eq 1 ];then
  8         echo 1
  9         return
 10     fi
 11 
 12     local tem=$val
 13     let tem--
 14     local tem1=0
 15      tem1=$(sum $tem)
 16     let res=$tem1+$val
 17     echo $res
 18 }
 19 sum 100


技术分享

四、求一个文件中数的最大值、最小值、平均值

file文件中的三个数:100,200,300

 1 #!/bin/bash
  2 count=0
  3 while read line
  4     do
  5         let ++count
  6         [ $count -eq 1 ] && min=$line && max=$line
  7         let sum+=$line
  8         [ $line -gt $max ] && max=$line
  9         [ $line -lt $min ] && min=$line
 10     done <file
 11     echo "max: ${max}"
 12     echo "min: ${min}"
 13     printf "argv: "
 14     echo "base=10;scale=2;
 15     ${sum}/${count}" | bc



技术分享



五、斐波那契数列(非递归)

 54 #!/bin/bash
 55 
 56 function fib()
 57 {
 58     read val
 59     fib_arr[1]=1
 60     fib_arr[2]=1
 61     local count=0
 62     while [ $count -le $val ]
 63     do
 64         let fib_arr[$count+2]=fib_arr[$count+1]+fib_arr[$count]
 65         ((count++))
 66     done
 67     echo ${fib_arr[$val]}
 68 }
 69 fib

技术分享


六、斐波那契(递归)

#!/bin/bash
function fib()
 76 {
 77     local val=$1
 78     local fiv_val1=0
 79     local fiv_val2=0
 80     local fiv_curr=0
 81     if [ $1 -lt 3 ];then
 82             echo 1
 83             return
 84     fi
 85     let val--
 86     fiv_val1=$( fib $val )
 87     let val--
 88     fiv_val2=$( fib $val )
 89     let fiv_curr=$fiv_val1+$fiv_val2
 90     echo $fiv_curr
 91 }
 92 ret=$(fib $val)
 93 echo "$ret"


技术分享


七、将一个问价中的字符串转换:例如:"123abc456"->"456ABC123"

file文件中是“123abc456”转换成“456ABC123”

   #!/bin/bash
 21 read name
 22 
 23 while read line
 24 do
 25     str1=$(echo $line | cut -c 1-3)
 26     str2=$(echo $line | cut -c 4-6 | tr ‘[a-z]‘ ‘[A-Z]‘)
 27     str3=$(echo $line | cut -c 7-9)
 28     echo ${str3}${str2}${str1}
 29 done<$name >${name}_bak
 30 function main()
 31 {
 32     read target
 33     sum $target
 34 }
 35 main



技术分享






shell脚本练习题

标签:shell

原文地址:http://9195095.blog.51cto.com/9185095/1792660

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