Shell脚本 ——case 条件测试语句
基本介绍: case 语句是Shell脚本中用于条件测试和多分支选择的一种重要结构。它可以根据变量或表达式的值来选择不同的执行路径。case 语句的格式清晰,使用方便,尤其适用于需要根据多个条件执行不同操作的场景。
基本格式:
case 变量 in
模式1)
# 当变量匹配模式1时执行的代码
;;
模式2)
# 当变量匹配模式2时执行的代码
;;
*)
# 默认执行的代码(相当于else)
;;
esac
基本用法:
1、变量匹配: case 语句根据变量的值进行匹配,执行与模式匹配的代码块。
2、模式匹配: 支持简单的字符串匹配和通配符模式(如 * , ? 等)。
3、默认分支: 使用 * 作为默认分支,当没有其他模式匹配时执行该分支中的代码。
4、结束符号: 每个分支的代码块以 ;; 结束,整个 case 语句以 esac 结束。
使用实例:
示例1:基本用法
#!/bin/bash
echo "Enter a number between 1 and 3:"
read num
case $num in
1)
echo "You entered one."
;;
2)
echo "You entered two."
;;
3)
echo "You entered three."
;;
*)
echo "You did not enter a number between 1 and 3."
;;
esac
示例2:使用通配符
#!/bin/bash
echo "Enter a file extension (e.g., .txt, .sh, .jpg):"
read ext
case $ext in
*.txt)
echo "You entered a text file extension."
;;
*.sh)
echo "You entered a shell script file extension."
;;
*.jpg | *.jpeg)
echo "You entered an image file extension."
;;
*)
echo "Unknown file extension."
;;
esac
示例3:处理多个条件
#!/bin/bash
echo "Enter a choice (start/stop/restart):"
read choice
case $choice in
start)
echo "Starting the service..."
;;
stop)
echo "Stopping the service..."
;;
restart)
echo "Restarting the service..."
;;
*)
echo "Invalid choice. Please enter start, stop, or restart."
;;
esac
示例4:忽略大小写
#!/bin/bash
echo "Enter a character (y/n):"
read char
case $char in
[yY])
echo "You entered yes."
;;
[nN])
echo "You entered no."
;;
*)
echo "Invalid input."
;;
esac
注意点:
1、匹配模式: case 语句中的模式支持通配符(* 匹配任意字符串,? 匹配单个字符)。
2、防止空输入: 如果输入可能为空,建议在模式中增加相应处理,以避免脚本执行错误。
3、分支结束: 每个分支的代码块必须以 ;; 结束,表示结束当前分支。
4、默认处理: 通常最好包含 * 分支来处理所有未匹配的情况。
更多内容请参考 Shell 脚本专栏。

1024

被折叠的 条评论
为什么被折叠?



