Shell Script—条件语句

1.if语句

在Shell脚本中,判断一个条件是否成立是比较常见的需求。在Bash中,可以使用如下的语句实现条件判断:

1.1 if

if语句,if是条件判断语句的关键字,语法结构为:

if [ condition ]
then
    # do something if condition is true
fi

[ condition ]是一个条件表达式,通常使用比较运算符(<, >, <=, >=, =, !=)和逻辑运算符(&&, ||)来组合。然后,在thenfi之间是在条件成立时要执行的一段代码,可以是一条命令,也可以是多行语句块。

例如,下面是一个示例脚本,当整数变量num的值大于10时打印一条消息:

#!/bin/bash

num=15

if [ $num -gt 10 ]
then
    echo "num value is $num"
fi

输出

num value is 15

1.2 if-else

if-else语句可以用于在条件成立时执行一些操作,条件不成立时执行另外一些操作。语法结构为:

if [ condition ]
then
    # do something if condition is true
else
    # do something if condition is false
fi

例如,下面是一个示例脚本,根据整数num的值,判断其奇偶性并打印一条消息:

#!/bin/bash

num=7

if [ $((num % 2)) -eq 0 ]
then
  echo "The number is even"
else
  echo "The number is odd"
fi

输出

The number is odd

1.3 if-elif-else

if-elif-else语句可以用于在多个条件中选择一个条件进行操作。语法结构为:

if [ condition1 ]
then
    # do something if condition1 is true
elif [ condition2 ]
then
    # do something if condition2 is true
else
    # do something if all conditions are false
fi

例如,下面是一个示例脚本,判断一个整数变量num的值在哪个区间,然后打印相应的消息:

#!/bin/bash

num=25

if [ $num -lt 20 ]
then
    echo "The number is less than 20"
elif [ $num -ge 20 ] && [ $num -lt 30 ]
then
    echo "The number is between 20 and 29"
else
    echo "The number is greater than or equal to 30"
fi

输出

The number is between 20 and 29

总之,在Bash中,可以使用ifif-elseif-elif-else等语句来进行条件判断,根据不同的应用需求选择相应的语句进行编写。

2.switch语句

Shell脚本中的switch语句,也称作case语句,可以基于一个或多个值匹配不同的代码块。下面是switch语句的基本语法:

case expression in
pattern1)
    # 匹配 pattern1 时执行的代码
    ;;
pattern2|pattern3)
    # 匹配 pattern2 或 pattern3 时执行的代码
    ;;
*)
    # 如果所有模式都不匹配时执行的代码
    ;;
esac

case语句的执行过程是:

  1. case语句根据expression的值逐个测试每个模式pattern
  2. 如果模式与expression匹配,则执行与其关联的代码块,并跳过其他模式和代码。
  3. 如果没有匹配到任何模式,则执行*模式中的代码块。
  4. 在每个代码块之后都需要使用两个分号来停止模式的任何匹配进程。

下面是一个使用case语句的例子:

#!/bin/bash
echo "input string"
read str

case $str in
    "apple")
        echo "苹果"
        ;;
    "banana")
        echo "香蕉"
        ;;
    "cherry"||"cranberry")
        echo "樱桃"
        ;;
    *)  # 匹配除了上面所列所有情况外的任何字符
        echo "无法识别的水果"
        ;;
esac

echo -e "\n"
echo "input number"
read num

case $num in
	1)
		echo "number 1"
		;;
	2)
		echo "number 2"
		;;
	3)
		echo "number 3"
		;;
	*)
		echo "other number"
		;;
esac

上面的例子会提示用户输入一个字符串,然后会根据所输入的字符串匹配与其关联的代码段。

总之,switch语句是Shell脚本中用于基于一个或多个值匹配不同的代码块的一种流程控制语句,可以用于简化代码和提高可读性。

猜你喜欢

转载自blog.csdn.net/shouhu010/article/details/131394936