#! /bin/bash
#选项后面的冒号表示该选项需要参数
while getopts ":v:" arg;
do
case $arg in
v )
#参数存在$OPTARG中
echo "arg:$OPTARG"
;;
: )
echo "缺少参数值"
exit 1
;;
[?] ) #当有不认识的选项的时候arg为?
echo "请输入 -v (如:-v hello)"
exit 1
;;
esac
done
执行
./hello.sh -v hello
输出
arg:hello
执行(包含“?” 需要转义)
./hello.sh -\?
./hello.sh -a
输出
请输入 -v (如:-v hello)
执行(-v 没有参数值)
./hello.sh -v
输出
缺少参数值
原因在 ":v:" 会在前面有":" 如果 改成"v:" 就不会有缺少参数值 都会走 “[?]”选项
网友评论