#9 case while until select语句的运用与例子

简介:

case分支选择结构:

  case 词 in [模式 [| 模式]...) 命令 ;;]... esac

  case 变量引用 in

    模式1)

      分支1

      ;;

    模式2)

      分支2

      ;;

    ...

    *)

      默认分支

      ;;

  esac


模式(PATTERN):

  1.普通的文本字符

  2.globbing风格的通配符:

    *:任意长度任意字符

    ?:任意的单个字符

    []:范围内的任意单个字符

    [^]:范围外的任意单个字符

  3.|:或


写一个脚本:

  提示用户输入信息,然后判断用户输入的信息是否合法;


#!/bin/bash

#

read -p "Please make your choice[yes of no]: " CHOICE


case $CHOICE in

  yes)

    echo "right." 

    ;;

  no)

    echo "wrong."

    ;;

  *)

    echo "Unknown."

    ;;

esac


if CONDITION1 ; then

  STATEMENT

elif CONDITION2 ; then

  STATEMENT

elif CONDITION3 ; then

  STATEMENT

...

else

  STATEMENT

fi


if的多分支结构和case的分支结构之间的区别:

  相同点:

    1.都是条件为真,执行对应分支的语句;条件为假,就不执行;

    2.都可以设置默认分支语句,即:所有条件都不匹配的时候,所执行的语句;


   不同点:

    1.if是根据命令的执行状态返回值来判断正确与否;case是根据变量的值的取值内容是否匹配模式来判断正确与否;

    2.case的每个分支都必须使用';;'结束;



管理用户账户的脚本,第四版:利用case语句实现

#!/bin/bash

#

if [ $# -lt 2 ] ; then

  echo "Usage: $(basename $0) -a User1,User2,...,UserN | -d User1,User2,...,UserN."

  exit 5

fi


case $1 in

  -a)

    for I in $(echo $2 | tr ',' ' ') ; do

      if id $I &> /dev/null ; then

        echo "$I exists already."

      else

        useradd $I

        echo $I | passwd --stdin $I &> /dev/null

        echo "Create $I successfully."

      fi

    done

  ;;

  -d)

    for J in $(echo $2 | tr ',' ' ') ; do

      if id $J &> /dev/null ; then

        userdel -r $J

        echo "Delte $J finished."

      else

        echo "User $J does not exist."

      fi

    done

  ;;

  *)

    echo "Usage: $(basename $0) -a User1,User2,...,UserN | -d User1,User2,...,UserN."

    exit 6

esac


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两个循环结构来讲,如果要实施变量增量操作,必须手动给出;


利用while和until循环结构,计算100以内所有整数的和;

#!/bin/bash

#

declare -i I=1

while [ $I -le 100 ] ; do

  let SUM+=$I

  let I++

done

echo $SUM


#!/bin/bash

#

declare -i I=1

until [ $I -gt 100 ] ; do

  let SUM+=$I

  let I++

done

echo $SUM


循环控制语句:

  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


总结:

  shell脚本编程语言:

    过程式编程语言

      顺序:主体结构

      选择:

        if

          单

          双

          多

        case

      循环

        for

          遍历列表:

          控制变量

        while

        until

        select


编写个shell脚本将/usr/local/test目录下大于100k的文件转移到/tmp目录下。


#!/bin/bash

#

FPATH="/usr/local/test"

DEST=/tmp

for i in $FPATH/* ; do

  if [ -f $i ] ; then

    if [ $(wc -c < $i) -gt 102400 ] ; then

      ls -l $i

    fi

  fi

done


本文转自谁等了谁 51CTO博客,原文链接:http://blog.51cto.com/12486569/1920366

相关文章
|
5月前
|
SQL 数据库
SQL中CASE WHEN THEN ELSE END的用法详解
SQL中CASE WHEN THEN ELSE END的用法详解
|
5月前
|
SQL
SQL语句case when then else end用法
SQL语句case when then else end用法
|
6月前
Break 语句和continue语句的区别
Break 语句和continue语句的区别
112 0
|
6月前
break语句和continue语句的区别
break语句和continue语句的区别
55 0
|
6月前
|
SQL
SQL语句case when的用法
SQL语句case when的用法
16.从入门到精通:range() 函数 break 和 continue 语句及循环中的 else 子句 break语句 continue语句 循环中的else子句 pass 语句
16.从入门到精通:range() 函数 break 和 continue 语句及循环中的 else 子句 break语句 continue语句 循环中的else子句 pass 语句
|
SQL
GROUP BY 语句
GROUP BY 语句
82 0
|
SQL BI
SQL利用Case When Then多条件判断
CASE     WHEN 条件1 THEN 结果1     WHEN 条件2 THEN 结果2     WHEN 条件3 THEN 结果3     WHEN 条件4 THEN 结果4 .........     WHEN 条件N THEN 结果N     ELSE 结果X END Case具有两种格式。
7271 0
|
SQL
SQL CASE 多条件用法
Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex          WHEN '1' THEN '男'          WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男'          WHEN sex = '2' THEN '女' ELSE '其他' END   这两种方式,可以实现相同的功能。
1390 0