bash case用法

bash case用法

在bash脚本中,除了使用if做条件判断,也可以使用case做条件判断。
case比起if else可以处理条件很多,而且条件均为匹配字符串
case格式如下

case 变量 in 
条件1)
  语句1
  语句2;;
条件2)
  语句1
  语句2;;
*)
  语句1
  语句2;;
esca

注意:

  1. 条件都是字符串,可以使用|,[],等简单的bash通配符,*号代表匹配所有字符串
  2. 语句结束需要双引号;;

示例

示例1:写一个脚本提供如下菜单显示给用户
m|M) show memory usages;显示内存信息
d|D) show disk usages;显示磁盘信息
q|Q) quit退出

[root@node1 bash_test]# cat 14.sh 
#!/bin/bash
cat << EOF
m|M) show memory usages;
d|D) show disk usages;
q|Q) quit
EOF
read -p "input you choice " UserChoice
case $UserChoice in 
m|M)
    free -m;;
d|D)
    df -h;;
q|Q)
    exit 0;;
*)
    echo "invalid character"
esac
[root@node1 bash_test]# ./14.sh 
m|M) show memory usages;
d|D) show disk usages;
q|Q) quit
input you choice M
              total        used        free      shared  buff/cache   available
Mem:           7812        3227        4086          82         498        4247

注意:选项可以使用|代表或,比如输入m或M都可以查看内存信息

示例2:写一个程序,从终端中读取输入,判断输入的是数字,小写字母,大写字母,还是特殊字符

[root@node1 bash_test]# cat CheckInput.sh 
#!/bin/bash

read -p "input a character:" Char
case $Char in 
[0-9])
  echo "a digit";;
[A-Z])
  echo "a upper";;
[a-z])
  echo "a lower";;
[[:punct:]])
  echo "A punction.";;
*)
  echo "Special char";;
esac
[root@node1 bash_test]# ./CheckInput.sh 
input a character:A
a upper

注意:[a-z]需要放在[A-Z]后面,因为bash中[a-z]包括[A-Z],不过我们也可以使用[[:lower:]]代表小写字母,[[:upper:]]代表大写字母

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值