linux的switch命令(case)作者:bin
在编写shell脚本时,经常会遇到,在一组可能的值中找到特定的值,这种情况下就会写出很多个if-then-else语句
这时我们可以使用case命令进行处理
case var in
parttern 1 | parttern2) commands1;;
parttern 3) commands2;;
*) commands3;;
esac
使用通配符*可以捕获所有与已知模式不匹配的值;
应用实例:
命令 ./test.sh -au zengbin -p 123456
使用-a -u -p等参数进行参数的传递(shift将$2变为$1,$3变为$2,依次往前,$0依然是文件名字)
while [ -n "$1" ]
do
case "$1" in
-a) echo "a命令";;
-u) echo "用户名为$2"
shift;;
-p) echo "密码为$2"
shift;;
--) shift
break;;
*) echo "未知命令$1";;
esac
shift
done
还可以使用如下方式简化(使用getopts命令可以”选项,参数间不用空格”:./test.sh -auzengbin -p123456)
#!/bin/bash
while getopts :au:p: opt
do
case "$opt" in
a) echo "a命令";;
u) echo "用户名为${OPTARG}";;
p) echo "密码为${OPTARG}";;
*) echo "未知命令$opt";;
esac
done