一、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
EOFread -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
转载于:https://blog.51cto.com/wind365/1349437