shell中的循环语句

shell中的循环语句

for循环
for语法格式1:

for 变量 in 值1 值2 值3 值4 值5 值6 ... ...
do
     命令
done

for i in 1 88 3 90
do
    echo $1
done


[root@vh01 script]# vim f.sh
#!/bin/bash
for i in 1 88 3 90 a tt qq
do
    echo $i
done
 
for i in a b c
do
  echo "nihao"
done


[root@vh01 script]# vim ping1.sh
#!/bin/bash
for i in `seq 100 120`
do
ping -c 3 -i 0.1 -w 2 192.168.4.$i &>/dev/null
    if [ $? -eq 0 ];then
       echo "host 192.168.4.$i is up"
    else
       echo "host 192.168.4.$i is down"
    fi
done

脚本:循环将/var/log/所有内容tar打包
#!/bin/bash
for i in `ls /var/log`
do
   tar -czf /tmp/$i.tar.gz /var/log/$i
done

利用文件的名字创建用户
[root@vh01 script]# vim user.txt
jim
bob
harry
liang
[root@vh01 script]# vim useradd.sh
#!/bin/bash
for i in `cat user.txt`
do
   useradd $i
   echo '123'|passwd --stdin $i
done

for语法格式2:

for ((i=1;i<=5;i++))
do
     echo $i
done

for ((i=10;i>=1;i--))
do
     echo $i
done

乘法表
[root@vh01 script]#
#!/bin/bash
for ((i=1;i<=9;i++))
do
     for ((j=1;j<=i;j++))
     do
          if [ $[i*j] <10 ];then
                echo -n "$i*$j=$[i*j]  "
           elif [ $[i*j] >=10 ];then
                echo -n "$i*$j=$[i*j] "
           fi
     done
     echo
done
[root@vh01 script]# chmod +x calculation.sh
[root@vh01 script]# ./calculation.sh
1*1=1  
2*1=2  2*2=4  
3*1=3  3*2=6  3*3=9  
4*1=4  4*2=8  4*3=12  4*4=16  
5*1=5  5*2=10  5*3=15  5*4=20  5*5=25  
6*1=6  6*2=12  6*3=18  6*4=24  6*5=30  6*6=36  
7*1=7  7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49  
8*1=8  8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64  
9*1=9  9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81


echo -n 不换行

echo -e
echo -e "\033[32m OK \033[0m"
echo -e "\033[43m OK \033[0m"
echo -e "\033[1;32m OK \033[0m"
echo -e "\033[43;32m OK \033[0m"
echo -e "\033[32m OK "
echo -e "\033[0m OK "

色块
[root@vh01 script]# vim color.sh
#!/bin/bash
for ((i=1;i<=8;i++))
do
     for ((j=1;j<=8;j++))
     do
         echo -en  "\033[43m \033[0m"
         echo -en  "\033[44m \033[0m"
     done
     echo
done

while循环
while [ 判断 ]
do
    命令
done

i=1
while [ $i  -lt 5 ]
do
          echo $i
          let i++
done


i=1
while :
do
       echo  "a"
       echo  "b"
       sleep 5
done

脚本:
[root@vh01 script]# vim cat.sh
#!/bin/bash
while :
do
clear
echo '1、查看CPU
2、查看内存
3、查看硬盘
4、查看IP
5、退出'
read -p "请输入1-5:"  x
    if [ $x -eq 1 ];then
           echo "CPU的工作频率如下:"
           cat /proc/cpuinfo|grep MHz
           read -p "请输入回车继续"
    elif [ $x -eq 2 ];then
           echo "内存信息如下:"
           free |grep "+"
           read -p "请输入回车继续"
    elif [ $x -eq 3 ];then
              echo "硬盘数据如下:"
               df -h|grep /boot
               read -p "请输入回车继续"
    elif [ $x -eq 4 ];then
              echo "本机IP是:"
               ifconfig eth0 |grep "inet addr"
               read -p "请输入回车继续"
    elif [ $x -eq 5 ];then
              exit
    fi
done

posted @ 2021-08-08 11:45  Linux刀客  阅读(543)  评论(0)    收藏  举报