LinuxShell脚本——选择结构
Posted shamao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LinuxShell脚本——选择结构相关的知识,希望对你有一定的参考价值。
LinuxShell脚本——选择结构
摘要:本文主要学习了Shell脚本中的选择结构。
if-else语句
基本语法
最简单的用法就是只使用if语句,它的语法格式为:
1 if 条件 2 then 3 命令 4 fi
如果将if和then写在一行,则需要在then前面添加“;”:
1 if 条件; then 2 命令 3 fi
如果有两个分支,就可以使用if-else语句,它的格式为:
1 if 条件 2 then 3 命令1 4 else 5 命令2 6 fi
Shell支持任意数目的分支,当分支比较多时,可以使用if-elif-else-结构,它的格式为:
1 if 条件1 2 then 3 命令1 4 elif 条件2 5 then 6 命令2 7 elif 条件3 8 then 9 命令3 10 ... 11 else 12 命令n 13 fi
使用举例
最简单的使用案例,只有一个条件和一个命令:
1 #!/bin/bash 2 read a 3 read b 4 if (( $a == $b )) 5 then 6 echo "a和b相等" 7 fi
根据条件执行不同的命令:
1 #!/bin/bash 2 read a 3 read b 4 if (( $a == $b )) 5 then 6 echo "a和b相等" 7 else 8 echo "a和b不相等" 9 fi
当有多个条件需要判断时:
1 #!/bin/bash 2 read a 3 if (( $a > 90 )) 4 then 5 echo "优秀" 6 elif (( $a > 80 )) 7 then 8 echo "良好" 9 elif (( $a > 70 )) 10 then 11 echo "中等" 12 elif (( $a > 60 )) 13 then 14 echo "及格" 15 else 16 echo "不及格" 17 fi
case-in语句
基本语法
表达式既可以是一个变量、一个数字、一个字符串,也可以是一个数学计算表达式,或者是命令的执行结果,只要能够得到确定的值就可以。
条件可以是一个数字、一个字符串,甚至是一个简单的正则表达式。
case会将表达式的值与多个条件逐个进行匹配:
1 如果表达式的值和某个条件匹配成功,就会执行这个条件后面对应的所有语句,直到遇见双分号;;才停止;然后整个case语句就执行完了,程序会跳出case语句,执行esac后面的其它语句。 2 如果表达式的值没有匹配到任何一个条件,那么就执行*)后面的语句(符号“*”表示其它所有值),直到遇见双分号;;或者esac才结束。
语法格式如下:
1 case 表达式 in 2 条件1) 3 命令1 4 ;; 5 条件2) 6 命令2 7 ;; 8 条件3) 9 命令3 10 ;; 11 ... 12 *) 13 命令n 14 esac
支持的正则表达式
case-in的条件部分支持简单的正则表达式,具体来说,可以使用以下几种格式:
1 *:表示任意字符串。 2 [abc]:表示a、b、c三个字符中的任意一个。比如,[15ZH]表示1、5、Z、H四个字符中的任意一个。 3 [m-n]:表示从m到n的任意一个字符。比如,[0-9]表示任意一个数字,[0-9a-zA-Z]表示字母或数字。 4 |:表示多重选择,类似逻辑运算中的或运算。比如,abc|xyz表示匹配字符串“abc”或者“xyz”。
使用举例
1 #!/bin/bash 2 read a 3 case $a in 4 90) 5 "优秀";; 6 80) 7 "良好";; 8 70) 9 "一般";; 10 60) 11 echo "及格";; 12 *) 13 echo "不及格" 14 esac
以上是关于LinuxShell脚本——选择结构的主要内容,如果未能解决你的问题,请参考以下文章