设为首页 收藏本站
查看: 1048|回复: 0

shell下的基础程序题练习

[复制链接]

尚未签到

发表于 2018-8-28 06:59:06 | 显示全部楼层 |阅读模式
  1.简单的进度条程序
DSC0000.png

  lable数组 相当于进度条前进时,那个刷新的圆圈,进度条前进时显示进度,用count%显示
  程序运行结果: DSC0001.png
  2.1-100之间的求和
  1>用while实现                        2>用for   in 实现
DSC0002.png             DSC0003.png

  程序运行结果:
DSC0004.png

  3>递归实现
  digui
  function add()
  {
  local val=$1
  local sum=0
  local add1=0
  local add2=0
  if [ $val -eq 1 ];then
  echo 1
  return
  fi
  add1=$val
  let val--
  add2=$(add $val)
  let sum=$add1+$add2
  echo $sum
  }
  function main()
  {
  read n
  add $n
  }
  main
  程序运行结果:
DSC0005.png

  4>利用seq 和bc 进行求和
  seq   n :生成到这个数的所有数
  |bc:利用|bc可以求和
  例如:
DSC0006.png

  所以1-100求和可以这样写:
DSC0007.png

  其中tr表示替换,seq出来的所有数都有换行符,通过tr将'\n'替换为'+'。后面的sed 是将最后一个'+'号替换为'\n',再通过bc进行求和。
  3.求第n个斐波那契数
  1>非递归实现
  local 修饰的变量是局部变量
  86 function fib()
  87 {
  88   local val=$1
  89    while [ $val -eq 0 -o $val -eq 1 ]
  90   do
  91    echo 1
  92    return
  93  done
  94   i=1
  95   j=1
  96    while [ $val -ge 2 ]
  97    do
  99   let fibn=$i+$j
  100     i=$j
  101     j=$fibn
  102   ((val--))
  103   done
  105 }
  106 function main()
  107 {
  108   read n
  109   fib $n
  110   echo $fibn
  112 }
  113 main
  2>递归实现
  思想:当n=1或者n=0时,return 1。因为第n个斐波那契数是第n-1个和第n-2个数之和,所以对传过来的n值先减1在递归保存值,再对n减1递归保存值,第n个就是两个保存者之和。
  115 function fib()
  116 {
  117  local val=$1
  118  local fib1=0
  119  local fib2=0
  120  fibc=0
  121 if [ $val -eq 0 -o $val -eq 1 ];then
  122 echo 1
  123 return
  124 fi
  125 let val--
  126 fib1=$(fib $val)
  127 let val--
  128 fib2=$(fib $val)
  129 let fibc=$fib1+$fib2
  130 echo $fibc
  131
  132 }
  133
  134 function main()
  135 {
  136   read n
  137   fib $n
  138
  139 }
  140 main
  程序运行结果:
DSC0008.png

  4.读取另外一文件里的数值,求出最大值、最小值、和、平均值
  1 #!/bin/bash  2
  3  max=0
  4  min=0
  5  count=0
  6  sum=0
  7  read name
  8  cat $name | while read line
  9  do
  10   [ $count -eq 0 ] &&{
  11      echo 'count'
  12      max=$line
  13      min=$line
  14
  15     }
  16  [ $max -lt $line ] &&{
  17    max=$line
  18  }
  19
  20  [ $min -gt $line ] &&{
  21  min=$line
  22 }
  23   let count++
  24   let sum=sum+line
  25  echo "max=$max" "min=$min" "sum=$sum"
  26  let avg=${sum}/${count}
  27  echo "avg=$avg"
  28 done
  程序运行结果:
DSC0009.png

DSC00010.png

  cat $name 将其重定向到name文件中,然后通过行读取参数,进行判断和运算。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-557429-1-1.html 上篇帖子: shell脚本:练习题 下篇帖子: 开启终极效率shell之旅(2)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表