shell或bash使用case与shift处理多个命令行参数
1. shift命令
- 在bash中定义了9个位置变量,分别使用$1,$2,…$9,借助 shift 命令可以访问多于9个的命令行参数。
- shift命令一次移动参数的个数由该命令后的数字参数决定,如shift 2 可以将命令行参数 $3 移动至 $1 。
2. shell中的case语句
- case语句特点
-
以case…esac为标志;
-
每个模式以右括号 “)” 结束,匹配模式可以使用 [0-9] 以及 “|” 等通配符;
-
双分号 “;;” 表示命令序列结束;
-
默认模式使用*)表示,在不满足前面的模式后,执行默认模式后的命令序列;
case $变量名 in 模式1) 命令序列1 ;; 模式2) 命令序列2 ;; *) 默认执行的命令序列 ;; esac
-
3.实例
-
使用while循环来判断命令行参数个数,而后结合case以及shift命令处理参数赋值给不同的成员变量。
while [[ $# -gt 0 ]] do key="$1" case $key in -tool) SIMULATOR="$2" shift ;; -test) TEST="$2" shift ;; -n) TEST_NUM="$2" shift ;; -o) OUT_DIR="$2" shift ;; -seed) SEED="$2" shift ;; *) echo "Error: " echo " Unknow Options -> $1" echo "" echo "<<<Usage:" echo " sh demo.sh [-test base_test] [-n 10] [-o ./OUT] [-seed 123] [-tool vcs]" exit 1 ;; esac shift done