首页 > 代码库 > while,until,select循环

while,until,select循环

case分支选择结构:
 case 词 in [模式 [| 模式]...) 命令 ;;]... esac
 case 变量引用 in
  模式1)
   分支1
   ;;
  模式2)
   分支2
   ;;
  ...
  *)
   默认分支
   ;;
 esac

模式(PATTERN):
 1.普通的文本字符
 2.globbing风格的通配符:
  *:任意长度任意字符
  ?:任意的单个字符
  []:范围内的任意单个字符
  [^]:范围外的任意单个字符
 3.|:或

if的多分支结构和case的分支结构之间的区别:
 相同点:
  1.都是条件为真,执行对应分支的语句;条件为假,就不执行;
  2.都可以设置默认分支语句,即:所有条件都不匹配的时候,所执行的语句;

  不同点:
   1.if是根据命令的执行状态返回值来判断正确与否;case是根据变量的值的取值内容是否匹配模式来判断正确与否;
   2.case的每个分支都必须使用‘;;‘结束;

while
 while 命令; do 命令; done
 while CONDITION ; do
  循环体
 done
  进入循环条件:CONDITION一直为真;
  退出循环条件:CONDITION为假;

until
 until 命令; do 命令; done
 until CONDITION ; do
  循环体
 done
  进入循环条件:CONDITION一直为假;
  退出循环条件:CONDITION为真;

while CONDITION ; do CMD ; done
相当于
until ! CONDITION ; do CMD ; done

注意:对于while和until两个循环结构来讲,如果要实施变量增量操作,必须手动给出;

循环控制语句:
 continue
 break

continue:
 continue [n]
 提前结束第n层的本次循环,直接进入下一轮条件判断,若符合循环进入条件,则开启下一轮循环;

break:
 break [n]
 提前技术第n层循环;不再继续后续循环;

无限循环用法:
while true ; do
 循环体
done

until false ; do
 循环体
done

在此类的循环结构中,必须适当的使用continue和break,以保证循环不会一直持续下去;

能够实现遍历功能的while循环和until循环;
while read LINES ; do
 循环体
done < /PATH/FROM/SOMEFILE

until ! read LINES ; do
 循环体
done < /PATH/FROM/SOMEFILE

select
 select循环主要用于创建一个菜单式列表,供用户进行选择;
 列表是按照数字顺序排列的,我们只要选择数字即可;

 一般来讲,select与case一起使用;

 select是一个无限循环结构,因此,必须在循环体中使用break命令以退出循环,或者可以使用exit命令直接终止脚本运行;

 select NAME [in 词语 ... ;] do 命令; done

 select NAME [in LIST] ; do
  命令
 done


while,until,select循环