for,while,until循环

一、用until实现下列作业

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

#!/bin/bash

until  who | grep "^\<hacker\>" > /var/log/login.log && echo "you must logout" | write jack

do

    sleep 3s

done

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

#!/bin/bash

declare -i r=$(($RANDOM%10))

declare -i n=10000000000000000

until [ "$n" -eq "$r" ] && echo "you are so clear" 

do

read -p "you can guess a number[0-10]:" n

     if [ "$n" -gt "$r" ]

        then

        echo "you guess great"

     elif

        [ "$n" -lt "$r" ]

        then

        echo "you guess less"

     fi

done

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

#!/bin/bash

declare -i i=1

declare -i sum=0

until [ $i -eq 101 ] ; do

        sum=$[$sum+$i]

        i=$[$i+1]

done

echo "sum1..100:$sum"

4、编写脚本,通过ping命令探测172.16.250.1-254范围内的所有主机的在线状态,统计在线主机和离线主机各多少。

#!/bin/bash

declare -i i=1

declare -i y=0

declare -i n=0

until [ $i -eq 255 ];do

ping -c 1 -W 1 10.1.252.$i &> /dev/null && y=$[$y+1] || n=$[$n+1]

i=$[$i+1]

done

echo "ping up:$y"

echo "ping down:$n"

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

#!/bin/bash

i=1 

until [ $i -ge 10 ]; do

j=1

until [ $j -gt $i ];do

echo -ne ""$j"x"$i"=$[$i*$j]\t"

j=$[$j+1]

done

    i=$[$i+1]

    echo

done

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

until做法:

#!/bin/bash

MAX=$RANDOM MIN=$MAX i=1

until [ $i -ge 11 ] ; do

      n=$RANDOM

      i=$[$i+1]

      [ $MAX -ge $n ] && MAX=$MAX || MAX=$n

      [ $MIN -le $n ] && MIN=$MIN || MIN=$n

echo $n

done

echo "MAX=$MAX"

echo "MIN=$MIN"

while做法:

#!/bin/bash

i=1 a=$RANDOM

echo $a 

b=$a

while [ $i -le 9 ];do

    n=$RANDOM

echo $n

    i=$[$i+1]

    [ $n -gt $a ] && a=$n || a=$a 

    [ $n -lt $b ] && b=$n || b=$b

done       

  echo "MAX $a"       

  echo "MIN $b"

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

until做法:

#/bin/bash

i=1

until [ $i -gt 9 ];do

j=1

        until [ $j -gt 9 ];do

        [ $[$[$i+$j]%2] -eq 0 ] && echo -en "\033[41m  \033[0m" || echo -en "\033[46m  \033[0m"

j=$[$j+1]

    done

i=$[$i+1]

  echo 

done

for做法:

#/bin/bash

for i in {1..8}

do 

for j in {1..8}

    do

 if [ $j -lt 8 ] ; then

 [ "$[$[$i+$j]%2]" -eq 0 ] && echo -en "\033[41m  \033[0m" || echo -en "\033[45m  \033[0m"

 else

      [ "$[$[$i+$j]%2]" -eq 0 ] && echo -e "\033[41m  \033[0m" || echo -e "\033[45m  \033[0m"

      j=j++

 fi

done

i=i++

done 

原创文章,作者:zebra930,如若转载,请注明出处:http://www.178linux.com/37131

(0)
zebra930zebra930
上一篇 2016-08-22
下一篇 2016-08-22

相关推荐

  • -pxe

    一. BootStraping(OS install): 1. pxe:preboot excution environment , 即预启动执行环境,由intel开发,可实现无人值守自动安装操作系统 ( 依赖于dhcp (dhcpd )服务器与 ftp(lftp) 服务器) 2. pxe 自动化系统安装的流程: 1. client 从pxe网卡模式启动, …

    2016-11-18
  • 【马哥linux运维】–马帮高薪就业系列文章之一线资深运维

    时光荏苒,马哥linux运维在北京开校已经有一些时日了,随着大家对马哥linux的密切关注,来跟随小编走进我们马哥linux运维的北京校区 关于学员就业这点事 很多小伙伴在马哥学习一段时间后,获得了快速的成长,不少学员已经进入著名互联网公司拿到了高薪,有的在成长性公司成为技术骨干,有的已经出国等,我们回顾下最近几个月很多学员的成长,收获,自己的心得感受吧 当…

    2015-11-06
  • 马哥教育网络班21期-第七周课程练习

    第七周 1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动…

    学员作品 2016-08-29
  • sed基本用法详解

    一、sed介绍:        sed是非交互式的编辑器,同时又是面向字符流的,一次处理一行文本。当前输入的行被缓存至一个被称为模式空间(pattern space)的内存空间中,与给定的模式进行比对,若不匹配,则将内容输出至屏幕,之后读取第二行;若匹配,则执行编辑命令,命令执行完成后,将模式空间中…

    Linux干货 2016-08-10
  • 马哥教育网络班20期+第10周课程练习

     1. 请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 1. 加电自检:POST     通电后主板CMOS中的BIOS(基本输入输出系统)将进行硬件自检并简单设置,根据硬盘等     相关设备情况进入下一步   &…

    学员作品 2016-08-15
  • 马哥linux特推出“你学习,我买单—免费公开课”的活动

    马哥linux特推出“你学习,我买单—免费公开课”的活动 为了感谢广大linux爱好者对马哥教育的一路陪伴和支持。时值五一佳节来临之际,马哥linux特推出“你学习,我买单—免费公开课”的活动,本期分享主题为:“Linux运维架构师成长必经之路”,后期我们将会不断的推出更多免费精彩课程和大家一起分享, 具体报名方式以及问题咨询,请加入…

    学员作品 2015-04-22