for循环遍历式循环

for 变量 in 列表;do 

   Statement1;

   Statement2;

   ...

done

例子:写一个脚本,测试172.16.0.0/16网络内的所有主机是否在线;

#!/bin/bash

#               

for S in {0..254};do

    for U in {1..254};do

      ping -c1 -W1 172.16.$S.$U &> /dev/null && echo "172.16.$S.$U is online." || echo "172.16.$S.$U is not online."

    done

done

if 循环有三种:单分支、双分支和多分支

选择分支专门用来测试:

if,有三种:单分支、双分支、多分支

单分支语句:

     if  condition;then           

        statement                                                                 

        ...

     fi           

例子:判断文件/etc/profile是否为目录文件,若果存在则删除

  #!/bin/bash   #为注释信息

  #     

  if [ -d /etc/profile ];then

    rm -rf /etc/profile  &> /dev/null 

  fi                                                           

双分支

     if  condition;then           

        statement

        ...

     else

        statement

        ...

fi

例子:查看/etc/profile是不是普通文件,如果是则显示“the file is a common file” 是不是连接文件:若是,则显示“the file is a link file”,否则,显示“the file is not unknown”  

  #!/bin/bash

  #

  #

   if [ -f /etc/profile ];then

      echo "the file is a common file.“ 

   elif [ -L /etc/profile ];then

      echo "the file is a link file"  

   else

      echo "the file is not unknown

   fi           

多分支:

  if condition1;then

     statement

     ...

 elif condition2;then

     statement

     ...

 else

   statement

   ...

 fi

例子:查看/etc/profile文件的格式,若是普通文件,则显示“the file is a common file”;若是连接文件,显示“the file is a link file”;若是目录,则显示“the file is a directory”;否则,显示“the file is not unknown.

 # vim file1.sh

  #!/bin/bash

  #

   if [ -f /etc/profile ]; then           -f  判断文件类型是否为普通文件

      echo "the file is a common file." 

   elif [ -L /etc/profile ]; then         -L  判断文件类型是否为连接文件

      echo "the file is a link file."

   elif [ -d /etc/profile ]; then         -d  判断文件类型是否为目录

      echo "the file is a directory."     

   else

      echo "the file is not unknown."

   fi           

while循环:         满足循环,不满足不循环

while CONDITTONdo           

  statement1                

  ...                     

done       

例子:脚本1、要求用户从键盘输入一个用户名,判断此用户是否存在,如果存在,则返回此用户的默认shell;如果不存在,提示用户不存在。

2、判断完成以后不要退出脚本,而是继续提示N|n(next)用户输入其它用户名以做出下一个判断,而键入其它任意字符可以退出;

    

脚本中的循环语句_休闲

          

util循环:           不满足循环,满足不循环

until  CONDITTON; do     

  statement1               

  ...             

done 

写一个脚本

1、判断一个指定的脚本是否有语法错误;如果有错误,则提醒用户键入Q或者q无视错误并退出,其它任何键可以通过vim打开这个指定的脚本;

2、如果用户通过vim打开编辑后保存退出时仍然有错误,则重复第1步中的内容;否则,就正常关闭退出。

脚本中的循环语句_休闲_02

多分支选择

case $VAR in

value1)

  ...

  ;;

value2)

  ...

  ;;

value3)

  ...

  ;;

*)

  ...

  ;;

esac

写一个脚本,完成以下功能:

1、提示用户输入一个用户名;

2、显示一个菜单给用户,形如:

U|u  show UID

G|g  show GID

S|s  show SHELL

Q|q  quit

3、提醒用户选择一个选项,并显示其所选择的内容;

脚本中的循环语句_休闲_03