1.if语句
在Shell脚本中,判断一个条件是否成立是比较常见的需求。在Bash中,可以使用如下的语句实现条件判断:
1.1 if
if
语句,if
是条件判断语句的关键字,语法结构为:
if [ condition ]
then
# do something if condition is true
fi
[ condition ]
是一个条件表达式,通常使用比较运算符(<
, >
, <=
, >=
, =
, !=
)和逻辑运算符(&&
, ||
)来组合。然后,在then
和fi
之间是在条件成立时要执行的一段代码,可以是一条命令,也可以是多行语句块。
例如,下面是一个示例脚本,当整数变量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中,可以使用if
、if-else
、if-elif-else
等语句来进行条件判断,根据不同的应用需求选择相应的语句进行编写。
2.switch语句
Shell脚本中的switch
语句,也称作case
语句,可以基于一个或多个值匹配不同的代码块。下面是switch
语句的基本语法:
case expression in
pattern1)
# 匹配 pattern1 时执行的代码
;;
pattern2|pattern3)
# 匹配 pattern2 或 pattern3 时执行的代码
;;
*)
# 如果所有模式都不匹配时执行的代码
;;
esac
case
语句的执行过程是:
case
语句根据expression
的值逐个测试每个模式pattern
。- 如果模式与
expression
匹配,则执行与其关联的代码块,并跳过其他模式和代码。 - 如果没有匹配到任何模式,则执行
*
模式中的代码块。 - 在每个代码块之后都需要使用两个分号来停止模式的任何匹配进程。
下面是一个使用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脚本中用于基于一个或多个值匹配不同的代码块的一种流程控制语句,可以用于简化代码和提高可读性。