模式
使用的模式 案件 与路径名扩展使用的相同。 模式以“)”字符结束。 以下是一些有效的模式:
表 31-1:案例模式示例
图案说明
图案说明
a) 匹配如果 字 等于“a”。
[[:α:]]) 匹配如果 字 是单个字母字符。
???) 匹配如果 字 正好是三个字符长。
*。文本) 匹配如果 字 以字符“.txt”结尾。
*) 匹配任何值 字. 将其作为最后一个模式包含在 案件 命令,捕捉任何值 字 与之前的模式不匹配; 也就是说,捕获任何可能的无效值。
以下是工作中的模式示例:
#!/斌/庆典
read -p "enter word > " case $REPLY in
[[:alpha:]]) echo "是单个字母字符。" ;; [ABC][0-9]) 回声“是 A、B 或 C 后跟一个数字。” ;;
???) 回声“是三个字符长。” ;;
*.txt) echo "是以'.txt'结尾的单词" ;;
*) echo "是别的东西。" ;; esac
#!/斌/庆典
read -p "enter word > " case $REPLY in
[[:alpha:]]) echo "是单个字母字符。" ;; [ABC][0-9]) 回声“是 A、B 或 C 后跟一个数字。” ;;
???) 回声“是三个字符长。” ;;
*.txt) echo "是以'.txt'结尾的单词" ;;
*) echo "是别的东西。" ;; esac
还可以使用竖线字符作为分隔符来组合多个模式。 这会创建一个“或”条件模式。 这对于处理大写和小写字符之类的事情很有用。 例如:
#!/斌/庆典
# case-menu:一个菜单驱动的系统信息程序清除
回声"
请选择:
A. 显示系统信息
B. 显示磁盘空间
C. 显示家居空间利用率
Q. 退出 ”
read -p "输入选择 [A、B、C 或 Q] >“
案例 $REPLY 在
q|q) echo "程序终止。" 出口
;;
一|A) echo "Hostname: $HOSTNAME" 正常运行时间
;;
乙|乙) df -h
;;
c|C) 如果 [[ $(id -u) -eq 0 ]]; 然后
echo "家庭空间利用率(所有用户)" du -sh /home/*
其他
echo "家庭空间利用率 ($USER)" du -sh $HOME
fi
#!/斌/庆典
# case-menu:一个菜单驱动的系统信息程序清除
回声"
请选择:
A. 显示系统信息
B. 显示磁盘空间
C. 显示家居空间利用率
Q. 退出 ”
read -p "输入选择 [A、B、C 或 Q] >“
案例 $REPLY 在
q|q) echo "程序终止。" 出口
;;
一|A) echo "Hostname: $HOSTNAME" 正常运行时间
;;
乙|乙) df -h
;;
c|C) 如果 [[ $(id -u) -eq 0 ]]; 然后
echo "家庭空间利用率(所有用户)" du -sh /home/*
其他
echo "家庭空间利用率 ($USER)" du -sh $HOME
fi
;;
*) echo "Invalid entry" >&2 exit 1
;;
ESAC
;;
*) echo "Invalid entry" >&2 exit 1
;;
ESAC
在这里,我们修改 案例菜单 程序使用字母代替数字进行菜单选择。 请注意新模式如何允许输入大写和小写字母。