一、case语句:用法格式

    case 变量引用(${}) in
    value1)
        语句1
        语句2
        ...
        ;;
    value2)
         语句1
         语句2
         ...
         ;;
    value3)
        语句1
        语句2
        ...
        ;;
    *)    #即相当于if结尾的else 其他任意情况
        语句1
        语句2
        ...
        ;;
    esac

二、

例子1,写一个脚本,能接受参数gzip、bzip2或xz,而后能将/etc/目录归档备份至/backup目录,并以参数指定的形式压缩存放;文件名称包含脚本执行时刻的时间;

#!/bin/bash
#

Com=$1

if [ -z $Com ]; then   #默认gzip
  Com=gzip
fi

[ -d /backup ] || mkdir /backup   #判断目录是否需要创建

case $Com in
gzip)
  tar zcf /backup/etc-`date +%F-%H-%M-%S`.tar.gz /etc/*
  RetVal=$?
  ;;
bzip2)
  tar jcf /backup/etc-`date +%F-%H-%M-%S`.tar.bz2 /etc/*
  RetVal=$?
  ;;
xz)
  tar Jcf /backup/etc-`date +%F-%H-%M-%S`.tar.xz /etc/*
  RetVal=$?
  ;;       
*)
  echo "Usage: `basename $0` {[gzip|bzip2|xz]}"
  exit 6
  ;;
esac 

[ $RetVal -eq 0 ] && echo "Backup etc finished.($Com)."

三、bash如何与用户交互:

bash内置命令, read
    -p "prompt":提示信息
    -t #: 超时秒数

     例子,

1、显示如下菜单给用户:
m|M) show memory usages;
d|D) show disk usages;
q|Q) quit
2、如果用户选择了第一项,则显示内存使用信息;
   如果选择了第二项,则显示磁盘挂载及使用相关信息;
   如果是第三项,退出,并显示选择退出;
   其它任何内容,均说明错误选项;

#!/bin/bash
cat << EOF
m|M) show memory usages;
d|D) show disk usages;
q|Q) quit
EOF

read -p "Your choice: " Choice

case $Choice in
m|M)
    free -m ;;
d|D)
    df -lh ;;
q|Q)
      echo "Quit..."
      exit 0
      ;;
*)
    echo "Invalid input."
    exit 5
    ;;
esac