8月26日 练习和作业while和until

1、while练习

1、编写脚本,求100以内所有正奇数之和

#!/bin/bash
i=1
sum=0
while [ $i -lt 100 ];do
    if [ $[i%2] -ne 0 ];then
     let sum+=i
    fi
     let i++ 
done
      echo jishusum=$sum

2、编写脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态,并统计在线和离线主机各多少

#!/bin/bash
read -p "please input nework(eg:192.168.0.0): " network
    netid=`echo $network|cut -d. -f1-3`
     hostid=1
    up=0
   down=0
while [ $hostid -le 254 ];do
       if  ping -c1 -w1 $netid.$hostid &>/dev/null;then
            echo "the $netid.$hostid is up"
                   let up++
             else
                 echo "the $netid.$hostid is down"
                      let down++
        fi
                      let hostid++
done
               echo the up is $up
               echo the down is $down

3、编写脚本,打印九九乘法表

#!/bin/bash
i=1
while [ $i -le 9 ];do
             j=1
      while [ $j -le $i ];do
            let k=i*j
         echo -en "$i*$j=$k\t"
              let j++
      done
          echo
let i++
done
[root@redhat7 app]#./while9\*9.sh 
1*1=1   
2*1=2   2*2=4   
3*1=3   3*2=6   3*3=9   
4*1=4   4*2=8   4*3=12  4*4=16  
5*1=5   5*2=10  5*3=15  5*4=20  5*5=25  
6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36  
7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49  
8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64  
9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81  

4、编写脚本,利用变量RANDOM生成10个随机数字,输出这个10数
字,并显示其中的最大值和最小值

#!/bin/bash
>/random.txt
i=1
while [ $i -le 10 ];do
          echo $RANDOM |tee -a /app/random.txt
           let i++
done
             echo "max is `cat /app/random.txt|sort -n|tail -n1`"
             echo "min is `cat /app/random.txt|sort -n|head -n1`"

5、编写脚本,实现打印国际象棋棋盘

#!/bin/bash
i=1
while [ $i -le 8 ];do
      j=1
    while [ $j -le 8 ];do
     let k=i+j
   if [ $[k%2] -eq 0 ];then
     echo -en "\033[41m  \033[0m"
   else
      echo -en "\033[43m  \033[0m"
   fi
          let j++
    done
       echo 
             let i++
done

6、后续六个字符串:efbaf275cd、4be9c40b8b、44b2395c46、f8c8873ce0、b902c16c8b、ad865d2f63是通过对随机数变量RANDOM随机执行命令:
echo $RANDOM|md5sum|cut –c1-10
后的结果,请破解这些字符串对应的RANDOM值

#!/bin/bash
#
read -p "please input passwd: " passwd
i=0
while [ $i -le 32767 ];do
      num=`echo $i |md5sum|cut -c1-10`
      if [ $num == $passwd ];then
            echo "$passwd:$i"
           break
     fi
              let i++
done

2、until练习

1、每隔3秒钟到系统上获取已经登录的用户的信息;如果发现用户hacker登录,则将登录时间和主机记录于日志/var/log/login.log中,并退出脚本

#!/bin/bash
>/app/login.log
until false;do
   if who |grep "^hacker\>" &>/dev/null;then
     who|grep "^hacker\>">/app/login.log  
         break
   fi
           sleep 3
done

2、随机生成10以内的数字,实现猜字游戏,提示比较大或小,相等则退出

#!/bin/bash
random=`echo $[RANDOM%10]`
read -p "I guess the num is: " num
      until [ $num -eq $random ];do
          [ $num -gt $random ]&&echo "you guess big"
          [ $num -lt $random ]&&echo "you guess small"
             read -p "I guess the num is: " num
                   random=`echo $[RANDOM%10]`
       done
            echo "you guess right"

3、用文件名做为参数,统计所有参数文件的总行数

#!/bin/bash
    [ -a $1 ]||{ echo "the file is not exist,please input again";exit 10; }
    [ $# -eq 0 ]&& echo "you must input a filename"&& exit 100
    until [ $# -eq 0 ];do
       sum=0
        n=`wc -l<$1`&>/dev/null
            let sum+=n
             shift
   done
          echo sum=$sum

4、用二个以上的数字为参数,显示其中的最大值和最小值

#!/bin/bash
>/app/num.log
 if [ $# -lt 2 ];then
     echo "the parameter must be more than one"
      exit 2
fi
  [[ "$1" =~ ^-?[0-9]+$ ]]|| { echo "the parameter must be integer" ;exit 100; }
     until [ $# -eq 0 ];do
       echo $1>> /app/num.log
  [[ "$1" =~ ^-?[0-9]+$ ]]|| { echo "the parameter must be integer" ;exit 20; }
           shift
     done
    echo "max=`cat /app/num.log |sort -n|tail -n1`"
   echo "min=`cat /app/num.log|sort -n|head -n1`"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,131评论 2 34
  • R:《正面管教》 I: WHAT:赞扬是父母对孩子做完一件事情的结果表示认可时,向孩子表达的自我满意的情绪反馈。它...
    蓝翼马阅读 204评论 0 0
  • 文/不不不不不不热 简介:有时候,一个人就是一个时代的缩影。人走了,时代也就过了。 时代变了,老人们渐渐跟不上时代...
    不不不不不不热阅读 241评论 7 6
  • 初秋了,气温渐渐凉爽,大家也正逢开学!在向夏天告别的时候,别忘了,要开始进补啦! 这个天气身体能量消耗大而进食较少...
    堆糖阅读 495评论 0 9