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

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

方法二:

if ! [ -d /testdir ];then  #判断文件是否存在
 mkdir /testdir &> /dev/null  #如果没有创建文件
fi
for i in {1..10};do 
 touch /testdir/$i`cat /dev/urandom |tr -dc [:alpha:] |head -c 8`.html  #创建文件
done

探测局域网内的主机

172.18.250-254.X

能ping通显示并保存至/root/ip.log

要求并行探测提高效率。

[root@centos6mini zuoye]# cat 11.sh 
 #!/bin/bash
> /root/ip.log
for i in {250..255};do
  for n in {1..255};do
  {
  ping -c1 -w1 172.18."$i"."$n" &> /dev/null
  if [ $? -eq 0 ] ;then
  echo "ping 172.18."$i"."$n" is up" #>> /root/ip.log
  fi
  }&
  done
done

[root@centos6mini zuoye]# ./11.sh 
ping 172.18.250.14 is up
ping 172.18.250.26 is up
ping 172.18.250.71 is up
ping 172.18.250.81 is up
ping 172.18.250.112 is up
ping 172.18.250.154 is up
ping 172.18.250.164 is up
ping 172.18.250.166 is up
ping 172.18.250.183 is up
ping 172.18.250.195 is up
ping 172.18.250.212 is up
ping 172.18.250.216 is up
ping 172.18.250.224 is up
ping 172.18.250.249 is up
ping 172.18.250.250 is up
ping 172.18.251.18 is up

打印国际象棋棋盘

方法一:

[root@centos6mini zuoye]# cat qipan.sh 
#!/bin/bash
for n in {1..8};do
  for i in {1..8} ;do
    if [ $[$n%2] -eq 0  ];then
      if [ $[$i%2] -eq 0  ];then
         echo -e "33[41m 33[0mc"
      fi
      if [ $[$i%2] -ne 0  ] ;then
         echo -e "33[47m 33[0mc"
        
      fi
    else
       if [ $[$i%2] -eq 0  ];then
                 echo -e "33[47m 33[0mc"
            fi
            if [ $[$i%2] -ne 0  ] ;then
                 echo -e "33[41m 33[0mc"
            
            fi

    fi
  done
  echo 
done

方法二:

#!/bin/bash
for xline in $(seq 1 8);do  #横向
 for yline in $(seq 1 8);do  #纵向
    if [ $[$[$xline+$yline]%2] -eq 0 ];then  #判断;横向与纵向相加,最后相除是否等于0
     echo -e "33[47m 33[0mc"
    else
     echo -e "33[41m 33[0mc"
    fi
 done
 echo 
done

方法三:(放大版)

#!/bin/bash
for i in {1..8};do
    for x in {1..4};do #控制单行大小。对已有输出进行放大
        for n in {1..8};do
            a=`echo $[$[$i+$n]%2]`
            if [ $a -eq 0 ];then
                echo -e "e[43m" "" "" "" "" "" "" "" "e[0mc"
            else
                echo -e "e[42m" "" "" "" "" "" "" "" "e[0mc"
            fi
        done
        echo
    done
done

while循环

while CONDITION; do
循环体
done

CONDITION:循环控制条件;进入循环之前,先做一次判 断;每一次循环之后会再次做判断;条件为“true”,则执行 一次循环;直到条件测试状态为“false”终止循环

因此:CONDTION一般应该有循环控制变量;而此变量的值 会在循环体不断地被修正

进入条件:CONDITION为true