8.16

for 循环是相对比较简单的循环,任何一个循环里面都可以嵌套循环,用for可以解决简单逻辑上的任何循环

有两种基本格式:for i in " ";do

        或者dor((i=0;i<=9;i++))可以嵌套if或者while等循环

if循环。最重要的是判断的条件,if意为如果什么就怎样怎样,所以这里if条件判断经常出错就是在这,这里我就不对中括号,小括号用法再一一赘述了,之前说过。

while,当型循环,表述起来比for复杂一点,因为for有简化版条件,while只能在循环体里进行变量加减操作。

until循环,直到什么才怎样怎样,是。while的反例。非常擅长执行定时任务,所以说每个任务都各有所长,关键就在于使用的时候互相配合使用,达到既简化操作又完成目的的目标。

用until 解决

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

username=`uptime | cut -d"," -f2 | grep -o "hacker"`

until [  -n  $username ] ;do uptime sleep3;done

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

read -p "please input your number" n

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

until [  $n -eq $a ];do

    [  $n -gt  $a    ] && echo "you win" || echo "you lose"

done

exit 1

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

sum=0

i=1

until  $i>100;do

((sum=sum+i))

((i++))

done

echo sum is $sum.

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

ip=172.16.250.

i=1

a=0

until $i>254;do

ping -W1 -c2 $ip$i &> /dev/null  && (echo "the host is on"  let a=a+1)|| echo "the host is off"

done

echo "the online host is $a"

echo "the halt host is $((254-$a))'

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

i=1

j=1

until $i>9;do

   until $j>$i;do

     echo $i*$j=$(($i*$j))

   done

   echo 

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

利用数组来做

declare -a  ran 

declare -i  max=0

declare -i  min=11

for((j=0;j<=9;j++)) ;do

      ran[$j]=$((RANDOM%10))

      echo "${ran[$j]}"

   [  ${ran[$j]} -le $min  ] && min=${ran[$j]}

   [  ${ran[$j]} -ge $max  ] && max=${ran[$j]}

done

echo MAX:$max

echo MIN:$min

利用until

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

read -p "please input your number"n

i=1

j=1

until  $i>$n;do

   until $j>$n;do  

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

   done

echo

done   

8、打印等腰三角形

read -p "please input your number" n

i=1

until (($i>$n));do

 echo""

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

(0)
sjfbjssjfbjs
上一篇 2016-08-19
下一篇 2016-08-19

相关推荐

  • 集中练习5-磁盘分区、文件系统挂载、RAID管理

    集中练习5-磁盘分区、文件系统挂载、RAID管理

    Linux干货 2017-10-27
  • mariadb基础应用

    mariadb基础应用 一、 前言 MariaDB is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users …

    Linux干货 2016-12-16
  • Liunx课前准备

            经过与家人的沟通终于来到了北京,开始了期待已久的Linux学习之路。    今天是讲课前第一天,和上学时代一样,各位同学做了自我介绍,仿佛又置身于10年前的课堂,同学们有序的介绍着自己,今天我们坐到了一起就为了同一个梦想。之前还有很大的顾虑:学不会怎么办?出来找不到工作怎么办?……但听了大家的介绍后发现很多同学与我一样,所有的顾虑瞬间消失,希…

    2018-03-26
  • 初学linux遇到的问题

    1 su uername 显示的是基本格式,不是类似于[root@Centos7 ~]#,看着不知道进入到哪个目录。解决办法:在家目录下使用ls -a命令显示隐藏文件,使用nano .bash_profile命令,在那里编辑PS1=”[\u@\h \W]\\$”保存退出就好了。 疑问:为什么不在/etc/bashrc下更改呢?自答:改…

    Linux干货 2017-07-15
  • 文本处理三剑客之一的sed

    处理文本的工具sed Stream EDitor, 行编辑器 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Se…

    Linux干货 2017-04-27
  • 20160907 centos启动流程

    1、centos5,6启动流程 centos系统启动流程linux系统的组成部分:内核+根文件系统内核:进程管理,内存管理,网络协议栈,文件系统,驱动程序,安全功能运行的系统环境可分为两层:内核空间,用户空间  用户空间:应用程序(进程或线程)  内核空间:内核代码(系统调用)    内核设计流派:   &n…

    Linux干货 2016-09-13