关于Linux中循环语句for,while,until用法的详解

   for,while,until这些循环结构体在Linux的script中是使用非常多的,所以掌握他们的用法是很必要的,以下是我整理的关于这三个命令的一些用法,希望对需要的人有帮助。


一、for循环     

结构一 :

for 变量 in 列表 ; do 
                    
  循环体
          
done


    

结构二:

for ((expr1;expr2;expr3)); do
                
   循环体
done


练习提高:

1、计算1-10的和sum;

结构一:

#!/bin/bash
declare -i sum=0
for i in `seq 1 10`
do
    let sum=$sum+$i
done
echo $sum

结构二:

#!/bin/bash
declare -i sum=0
for ((i=0;i<=10;i++))
do
    sum+=$i
done
echo $sum


2、计算1-1000的和sum;

#!/bin/bash
declare -i sum=0
for i in {1..1000}
do
    sum+=$i
done
echo $sum

          

3、  写一个脚本:

(1)、设定变量FILE的值为/etc/passwd

(2)、依次向/etc/passwd中的每个用户问好,并显示对方的shell,形如:  

        Hello, root, your shell: /bin/bash

(3)、统计一共有多少个用户

(4)、只向默认shell为bash的用户问声好    

#!/bin/bash
line=`wc -l /etc/passwd | awk '{print $1}'`
for i  in `seq 1 $line`
do
   echo "Hello, ` head -n $i /etc/passwd |tail -1 | awk -F : '{print $1}'`, your shell: `head -n $i /etc/passwd |tail -1 | awk -F : '{print $7}'` "
done
echo "system have $line user。"
line1=`grep "bash$" /etc/passwd | wc -l`
for i in `seq 1 $line1`
do
  echo  "Hello, `grep "bash$" /etc/passwd | head -n $i | tail -1 | awk -F: '{print $1}'`"
done


                       

4、写一个脚本:

计算100以内所有能被3整除的正整数的和;

 

#!/bin/bash
declare -i sum=0
for i in `seq 1 100`
do
    if [ $[$i%3] -eq 0 ]
    then
        sum+=$i
    fi
done
echo $sum
~


二、while循环

  while循环适用于循环次数未知的场景,要有退出条件。

                进入循环:条件满足

                退出循环:条件不满足

  用法: 

      while condition  ; do 

                    

         循环体


     done

             


练习提高:

1、计算100以内所有正整数的和sum;

 wKiom1Pck2CxuG-4AACQxEkFIMs486.jpg

2、 连续转换输入的字符,小写变大写,当输入quit时exit

wKioL1PclHzyL9SxAADFTMc1tQs944.jpg

3、 每5秒钟检测hadoop用户是否登录,并显示登录的时间                          wKiom1Pck2STnmu3AADYx8ShzMM937.jpg

   


三、until循环

         

until的用法其实是跟while差不多的,只是在条件满足上有所不同。

                

进入循环:条件不满足

退出循环: 条件满足

用法:

       until condition ; do

                                

          循环体


      done 


练习提高:

1、计算100以内所有正整数的和sum;

  wKioL1PclH_ymfI0AACKq8GDEdI357.jpg