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

相关推荐

  • 文件查找命令之find

    文件查找命令一共有两种,locate 和find ,那么他们在用法和功能上面有什么区别呢?     locate:查找速度快,模糊查找,遍历整个文件系统的目录到数据库中,然后在去数据库中查找,依赖于事先创建好的索引库,该数据库属于系统自动创建,定期自动更新,也可手动跟新,更新命令updatedb,更新数据库需要遍历整个根文件系统…

    Linux干货 2016-08-16
  • 是否

    是否

    Linux干货 2016-08-22
  • locate、find命令使用总结

    一、简介    在linux系统中存在"一切皆文件"的说法,这就足以说明文件的重要性,因此查找文件也是我们必须要掌握的技能。这时候熟练使用locate、find命令也就显得至关重要。尤其是find命令常用于日常工作中如安装完某个软件之后要查看这些软件的安装配置路径,或是需要按指定条件直接查找我们需要操作的文件。因此更需…

    Linux干货 2015-08-31
  • 马哥教育网络班21期第11周课程练习

    1、详细描述一次加密通讯的过程,结合图示最佳。 发送方Bob:自上至下 1、生成数据 2、Bob用单向加密算法对数据提取特征码 3、Bob用自己的私钥加密特征码,并附加在数据后面 4、Bob使用对称加密算法生成临时会话密钥加密特征码和数据 5、Bob用Alice的公钥加密临时会话密钥,并附加在数据后 接收方Alice:自下至上 1、Alice收到Bob数据,…

    Linux干货 2016-10-31
  • 文本处理三剑客之grep

    grep命令基本用法 1、grep正则表达式(对文本行进行搜索过滤) 格式:grep [option] PATTERN [FILE…] option: -i:忽略大小写 -v:取反,显示未被匹配到的pattern -n:显示匹配的行号 -c:统计匹配的行数 -o: 只显示匹配到的pattern -q: 静默,不予显示 -A#:after,匹配到的行再向后…

    Linux干货 2017-07-19
  • 马哥教育网络班21期-第八周课程练习

    第八周作业 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 集线器:集线器工作在OSI七层模型的物理层;功能是将传输信号再生或放大,收到数据后将数据转发至除接收接口外的所有接口(广播)),但是由于集线器所有端口属于共享带宽,属于同一个冲突域和属于同一个广播域,容易产生信号冲突导致帧碎片,现今大部分集线器已经被交换机所替代; 网…

    Linux干货 2016-09-01