linux shell循环:for、while、until用法详解

2019-09-23 08:51:54刘景俊

方式二:

#!/bin/bash
i=1
q=1
w=0
a=0
y=0
while [ $i -lt 255 ];do
  while [ $q -lt 255 ];do
    {
    ping -c1 -w1 172.18."$i"."$q" &> /dev/null
    a=`echo $?`
    if [ $a -eq 0 ] ; then 
      echo "172.18."$i"."$q"  up" >> /app/e.txt
      echo "172.18."$i"."$q"  :up"
    fi
    if [ $a -ne 0 ] ; then 
            echo "172.18."$i"."$q" down "  >> /app/w.txt
        
        echo "172.18."$i"."$q" down "

    fi
    }&
    let q=q+1

    
  done
  
  let  i=i+1
  q=1   ####将q的变量值从新赋值为1
done 
w=`cat /app/e.txt |wc -l`
echo "通的主机数为 : $w"
y=`cat /app/w.txt |wc -l`
echo "不通的主机数为 : $y"
rm -rf /app/w.txt /app/e.txt

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

[root@centos6mini 3.19]# cat 99 
#!/bin/bash
q=1
w=1
while [ $q -le 9 ];do
  while [ $w -le 9 ];do
    e=0
    let e=q*w  
    if [ $w -le $q ];then
    echo -n " $w*$q=$e "
    fi

  let w+=1
  done
  let q+=1
  w=1
  echo
done
[root@centos6mini 3.19]# ./99
 1*1=1 
 1*2=2  2*2=4 
 1*3=3  2*3=6  3*3=9 
 1*4=4  2*4=8  3*4=12  4*4=16 
 1*5=5  2*5=10  3*5=15  4*5=20  5*5=25 
 1*6=6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36 
 1*7=7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49 
 1*8=8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64 
 1*9=9  2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

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

[root@centos6mini 3.19]# ./4
25955
25748
16113
19729
8944
19049
16202
20067
30609
4309
最大值: 30609
最小值: 4309
[root@centos6mini 3.19]# cat 4 
#!/bin/bash
q=1
while [ $q -le 10 ] ;do
   echo $[RANDOM] &>> /app/o.txt
   #echo $[RAND0M] #每次随机都是新的值
  let q+=1  
done
cat /app/o.txt
w=`cat /app/o.txt |sort -rn |tail -n1`
e=`cat /app/o.txt |sort -rn | head -n 1`
echo "最大值: $e"
echo "最小值: $w"
rm -rf /app/o.txt

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

[root@centos6mini 3.19]# cat 5,sh
#!/bin/bash
q=1
w=1
while [ $q -le 8 ] ;do
  while [ $w -le 8 ] ;do
    if [ $[$[$q+$w]%2] -eq 0 ] ;then  ##判断句中的计算需要$[]括起来:
      echo -e "33[47m 33[0mc"
    else
      echo -e "33[41m 33[0mc"
    fi
  
  let w+=1
  done
  let q+=1
  w=1
  echo
done

后续六个字符串:efbaf275cd、4be9c40b8b、44b2395c46、f8c8873ce0、b902c16c8b、ad865d2f63是通过对随机数变量RANDOM随机执行命令:

echo $RANDOM|md5sum|cut –c1-10

后的结果,请破解这些字符串对应的RANDOM值

方法一:

#!/bin/bash
>6
while true ;do
    while true ;do
        w=`echo $RANDOM ` #定义变量--随机数随时在变化,给他赋值一个变量,后边取值就不在变化了
        q=`echo $w|md5sum|cut -c1-10`
        if [ $q == efbaf275cd ] ;then
            echo "efbaf275cd=$w" #>>6
        elif [ $q == 4be9c40b8b ] ;then
            echo "4be9c40b8b=$w" #>>6
        elif [ $q == 44b2395c46 ] ;then
            echo "44b2395c46=$w" #>>6
        elif [ $q == f8c8873ce0 ] ;then
            echo "f8c8873ce0=$w" #>>6
        elif [ $q == b902c16c8b ] ;then
             echo "b902c16c8b=$w" #>>6
        elif [ $q == ad865d2f63 ] ;then
             echo "ad865d2f63=$w" #>>6
        fi

    done
done
[root@centos6mini ~]# cat 6 |sort|uniq
44b2395c46=9000
4be9c40b8b=12000
ad865d2f63=1000
b902c16c8b=3000
efbaf275cd=15000
f8c8873ce0=6000