bash的编程之case语句:用法格式
case 变量引用(${}) in
value1)
语句1
语句2
...
;;
value2)
语句1
语句2
...
;;
value3)
语句1
语句2
...
;;
*)
语句1
语句2
...
;;
esac
例:写一个脚本,能接受参数gzip、bzip2或xz,而后能将/etc/目录归档备份至/backup目录,并以参数指定的形式压缩存放;文件名称包含脚本执行时刻的时间.
#!/bin/bash
#
Com=$1
if [ -z $Com ]; then
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)."
例:判断当前Linux发行版是RedHat, Fedora, CentOS还是其它。方法:取得/etc/issue文件第一行的第一个单词后进行比较.
#!/bin/bash
#
Issue=`grep "$1" /etc/issue | cut -d' ' -f1`
case $Issue in
RedHat)
echo "RedHat";;
Fedora)
echo "Fedora";;
CentOS)
echo "CentOS";;
*)
echo "{[RedHat|Fedora|Centos]}"
exit 3
;;
esac
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