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 11:36
下一篇 2016-08-19 11:50

相关推荐

  • 几个常用命令、inode及第二周作业

    一、cd命令 1、功能 用来进行不同目录间的切换,属于内部命令。 2、语法 cd  [-L|-P]  [dir] -L : 如果要切换到的目录是一个符号链接,就直接切换到符号链接名表示的目录(默认)。 -P : 如果要切换到的目录是一个符号链接,直接接切换到符号链接指向的目标目录。 3、用法说明 cd 或 cd ~ :进入当前用户的主目录…

    Linux干货 2016-08-02
  • LNAMP 跨网段实现

    感谢Kason老师给我了知识!

    2017-12-31
  • tomcat

      编程语言:硬件级:微码编程,汇编语言系统级:C,C++,…应用级:Java, PHP, Python, Ruby, Perl, C#, …Python: PVMStandard LibraryWeb Framework:Django, Flask, …Java:JVM,JDKbash:bash ex…

    Linux干货 2017-05-22
  • N22-第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。      2、编辑/etc/group文件,添加组hadoop。 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为…

    Linux干货 2016-09-05
  • sed命令解析

    处理文件的工具sed Stream EDitor, 行编辑器 一次只读一行,只处理一行,不对源文件做处理,至输出到屏幕上模式空间 sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space), 接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往…

    Linux干货 2016-08-11
  • HAproxy簡單配置

    用途:TCP/HTTP反向代理,四层负载均衡,适合高可用环境。Linux6.4版本后haproxy已随base仓库收录进来。文档:http://cbonte.github.io/haproxy-dconv/主程序:/usr/sbin/haproxy 主配置文件:/etc/haproxy/haproxy.cfg启动文件:/usr/lib/systemd/sys…

    2017-05-17