执行多项操作
在版本中 打坏 4.0年之前, 案件 只允许对成功匹配执行一个操作。 成功匹配后,命令将终止。 在这里,我们看到一个测试字符的脚本:
#!/斌/庆典
# case4-1: 测试一个字符
read -n 1 -p "输入一个字符 > " echo
案例 $REPLY 在
[[:upper:]]) echo "'$REPLY' 是大写。" ;;
[[:lower:]]) echo "'$REPLY' 是小写的。" ;;
[[:alpha:]]) echo "'$REPLY' 是按字母顺序排列的。" ;;
[[:digit:]]) echo "'$REPLY' 是一个数字。" ;; [[:graph:]]) echo "'$REPLY' 是一个可见字符。" ;;
[[:punct:]]) echo "'$REPLY' 是一个标点符号。" ;; [[:space:]]) echo "'$REPLY' 是一个空白字符。" ;; [[:xdigit:]]) echo "'$REPLY' 是一个十六进制数字。" ;;
ESAC
#!/斌/庆典
# case4-1: 测试一个字符
read -n 1 -p "输入一个字符 > " echo
案例 $REPLY 在
[[:upper:]]) echo "'$REPLY' 是大写。" ;;
[[:lower:]]) echo "'$REPLY' 是小写的。" ;;
[[:alpha:]]) echo "'$REPLY' 是按字母顺序排列的。" ;;
[[:digit:]]) echo "'$REPLY' 是一个数字。" ;; [[:graph:]]) echo "'$REPLY' 是一个可见字符。" ;;
[[:punct:]]) echo "'$REPLY' 是一个标点符号。" ;; [[:space:]]) echo "'$REPLY' 是一个空白字符。" ;; [[:xdigit:]]) echo "'$REPLY' 是一个十六进制数字。" ;;
ESAC
运行这个脚本会产生这个:
[我@linuxbox ~]$ 案例4-1
输入一个字符 > a
'a' 是小写。
[我@linuxbox ~]$ 案例4-1
输入一个字符 > a
'a' 是小写。
该脚本在大多数情况下都有效,但如果一个字符与多个 POSIX 字符类匹配,则该脚本会失败。 例如,字符“a”既是小写字母又是字母,也是十六进制数字。 在 打坏 在 4.0 版之前没有办法 案件 匹配多个测试。 现代版本 打坏, 将“;;&”符号添加到
终止每个动作,所以现在我们可以这样做:
#!/斌/庆典
# case4-2: 测试一个字符
read -n 1 -p "输入一个字符 > " echo
案例 $REPLY 在
[[:upper:]]) echo "'$REPLY' 是大写。" ;;&
[[:lower:]]) echo "'$REPLY' 是小写的。" ;;&
[[:alpha:]]) echo "'$REPLY' 是按字母顺序排列的。" ;;&
[[:digit:]]) echo "'$REPLY' 是一个数字。" ;;& [[:graph:]]) echo "'$REPLY' 是一个可见字符。" ;;&
[[:punct:]]) echo "'$REPLY' 是一个标点符号。" ;;& [[:space:]]) echo "'$REPLY' 是一个空白字符。" ;;& [[:xdigit:]]) echo "'$REPLY' 是一个十六进制数字。" ;;&
ESAC
#!/斌/庆典
# case4-2: 测试一个字符
read -n 1 -p "输入一个字符 > " echo
案例 $REPLY 在
[[:upper:]]) echo "'$REPLY' 是大写。" ;;&
[[:lower:]]) echo "'$REPLY' 是小写的。" ;;&
[[:alpha:]]) echo "'$REPLY' 是按字母顺序排列的。" ;;&
[[:digit:]]) echo "'$REPLY' 是一个数字。" ;;& [[:graph:]]) echo "'$REPLY' 是一个可见字符。" ;;&
[[:punct:]]) echo "'$REPLY' 是一个标点符号。" ;;& [[:space:]]) echo "'$REPLY' 是一个空白字符。" ;;& [[:xdigit:]]) echo "'$REPLY' 是一个十六进制数字。" ;;&
ESAC
当我们运行这个脚本时,我们得到:
[我@linuxbox ~]$ 案例4-2
输入一个字符 > a 'a' 是小写。 'a' 是字母。
'a' 是一个可见的字符。 'a' 是一个十六进制数字。
[我@linuxbox ~]$ 案例4-2
输入一个字符 > a 'a' 是小写。 'a' 是字母。
'a' 是一个可见的字符。 'a' 是一个十六进制数字。
添加 ";;&" 语法允许 case 继续进行下一个测试,而不是简单地终止。