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