Case控制结构

Case                   变量引用(${var}        in

Value1|value2)

Cmd1

Cmd2

;;

Value3|value4)

Cmd3

Cmd4

;;

Esac

注:整个结构中最后一条命令可以不用加双分号。

注:case中的value不支持正则,支持globbing(通配)以及|(或者)这样的写法;还可以使用字符集例如[:punct:]

例:[Yy][Ee][Ss]|[Yy])   cmd;;

         [Nn]|[Nn][Oo]) cmd;;

         *)                                  cmd;

 

 

Bash如何与用户交互:

read命令(读取用户/文件输入的值,将其复制给指定的变量为值)

格式:read  [选项] 变量名(如果不指定变量名,会将用户输入的值赋值给变量REPLY

注:如果用户指定一个变量名,会将所有用户输入的数据赋值给这个变量;;如果用户指定多个变量名,会以默认(或者指定的)输入分隔符IFS分割用户的输入依次(一个值对应一个变量名)赋值给用户指定的变量;如果分割的值多余用户指定的变量数,会将多余的值一并赋值给用户指定的最后一个变量;如果分割的值少于用户指定的变量,那么用户指定的最后几个变量为空值。

 

选项及含义

-p:打印提示字符

-t:超时时间,达到指定时间,以一个非0值的退出状态退出read命令,不会读取用户已经输入的变量值!!!

-s:使用户输入的字符不显示在屏幕上;等于stty–echo命令,但不需要stty echo恢复。

-n#:对输入的字符计数,当输入的字符数达到预设的字符数#时,他会自动退出并将输入的数据赋值给变量。

*从文件中读取变量:(1)cat  file|while read line  (2)while  read line  。。。done<file

                                     (3)或者将while  read line放在脚本中,并用命令调用脚本:./1.sh <file

注:for循坏也可以这么做,另外循环的输出可以在done后面加管道或者>或者>>来处理。