本文介绍: 以下内容源于C语言中文网的学习整理,如有侵权,请告知删除

以下内容源于C语言中文网的学习与整理,如有侵权,请告知删除

和其它编程语言类似,Shell 支持选择结构,分别是 if else 语句case in 语句

一、if else语句

Shell三种 if … else 语句,根据情况选用:

(1)if … fi 语句(单个分支

(2)if … elsefi 语句两个分支

(3)if … elif … elsefi 语句(多个分支

1、if … fi 语句

(1)该语句的格式如下,其中condition判断条件,如果 condition 成立(返回“真”),那么 then 后边的语句将会被执行;如果 condition 不成立(返回“假”),那么不会执行任何语句。

if  condition
then
    statement(s)
fi

#或者

if  condition;  then
    statement(s)
fi

(2)下面的例子使用 if 语句来比较个数字的大小(())是一种数学计算命令,它除了可以进行最基本的加减乘除运算,还可以进行大于、小于、等于关系运算,以及与、或、非逻辑运算。当 ab 相等时,(( $a == $b ))判断条件成立,进入 if,执行 then 后边的 echo 语句。

xjh@ubuntu:~/iot/tmp$ cat test.sh 
#!/bin/bash

read a
read b

if (( $a == $b ))
then
    echo "a和b相等"
fi
xjh@ubuntu:~/iot/tmp$ ./test.sh 
34
34
a和b相等
xjh@ubuntu:~/iot/tmp$

2、if … else … fi 语句

(1)如果有两个分支,就可以使用 if else 语句,它的格式如下。其中如果 condition 成立,那么 then 后边的 statement1 语句将会被执行;否则,执行 else 后边的 statement2 语句。

if  condition
then
   statement1
else
   statement2
fi

(2)下面的例子使用 if 语句来比较个数字的大小

#!/bin/bash

read a
read b

if (( $a == $b ))
then
    echo "a和b相等"
else
    echo "a和b不相等,输入错误"
fi

3、if … elif … else … fi 语句

(1)当分支比较多时可以使用 if elif else 结构格式如下,注意 if 和 elif 后边都得跟着 then。

if  condition1
then
   statement1
elif condition2
then
    statement2
elif condition3
then
    statement3
……
else
   statementn
fi

 (2)实例演示

#!/bin/bash

read age

if (( $age <= 2 )); then
    echo "婴儿"
elif (( $age >= 3 &amp;&amp; $age <= 8 )); then
    echo "幼儿"
elif (( $age >= 9 &amp;&amp; $age <= 17 )); then
    echo "少年"
elif (( $age >= 18 &amp;&amp; $age <=25 )); then
    echo "成年"
elif (( $age >= 26 &amp;&amp; $age <= 40 )); then
    echo "青年"
elif (( $age >= 41 && $age <= 60 )); then
    echo "中年"
else
    echo "老年"
fi

二、case in语句

分支较多,并且判断条件比较简单时,使用 case in 语句就比较方便了。

1、case in语句的格式

(1)case in语句的格式如下 

case expression in
    pattern1)
        statement1
        ;;
    pattern2)
        statement2
        ;;
    pattern3)
        statement3
        ;;
    #其他pattern情形
    *)
        statementn
esac

(2)实例演示

xjh@ubuntu:~/iot/tmp$ cat test.sh 
#!/bin/bash

printf "Input integer number: "
read num

case $num in
    1)
        echo "Monday"
        ;;
    2)
        echo "Tuesday"
        ;;
    3)
        echo "Wednesday"
        ;;
    4)
        echo "Thursday"
        ;;
    5)
        echo "Friday"
        ;;
    6)
        echo "Saturday"
        ;;
    7)
        echo "Sunday"
        ;;
    *)
        echo "error"
esac
xjh@ubuntu:~/iot/tmp$ ./test.sh 
Input integer number: 3
Wednesday
xjh@ubuntu:~/iot/tmp$ ./test.sh 
Input integer number: 9
error
xjh@ubuntu:~/iot/tmp$

2、case in 与正则表达式

(1)case in 的 pattern 部分支持简单正则表达式,具体来说,可以使用以下几种格式: 

格式 说明
* 表示任意字符串
[abc] 表示 a、b、c 三个字符中的任意一个。比如,[15ZH] 表示 1、5、Z、H 四个字符中的任意一个。
[m-n] 表示从 m 到 n 的任意一个字符比如,[0-9] 表示任意一个数字,[0-9a-zA-Z] 表示字母数字
| 表示多重选择,类似逻辑运算中的或运算比如,abc | xyz 表示匹配字符串 “abc” 或者 “xyz”。

(2)实例演示

xjh@ubuntu:~/iot/tmp$ cat test.sh 
#!/bin/bash

printf "Input a character: "
read -n 1 char

case $char in
    [a-zA-Z])
        printf "nlettern"
        ;;
    [0-9])
        printf "nDigitn"
        ;;

    [,.?!])
        printf "nPunctuationn"
        ;;
    *)
        printf "nerrorn"
esac
xjh@ubuntu:~/iot/tmp$ ./test.sh 
Input a character: ?
Punctuation
xjh@ubuntu:~/iot/tmp$ ./test.sh 
Input a character: 8
Digit
xjh@ubuntu:~/iot/tmp$ ./test.sh 
Input a character: [
error
xjh@ubuntu:~/iot/tmp$ 

原文地址:https://blog.csdn.net/oqqHuTu12345678/article/details/125662997

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_37410.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注