dazhi00 2019-06-21
$# 传递到脚本的参数个数$* 以一个单字符串显示所有向脚本传递的参数 如 "1 2 3"$@ 分别取出参数 如 "1" "2" "3"$?上一个命令的退出状态$-$_$!$[0-9] 用户第n个参数参数
手动处理 只能通过 内建参数来获取处理
getopts 内建工具,不能处理长参数
getopt 支持长短参数
系统内建的工具,只能处理短参数
-o或--options选项后面接可接受的短选项,如ab:c::,表示可接受的短选项为-a -b -c,其中-a选项不接参数,-b选项后必须接参数,-c选项的参数为可选的-l或--long选项后面接可接受的长选项,用逗号分开,冒号的意义同短选项。-n选项后接选项解析错误时提示的脚本名字
ARGS=`getopt -o g:p:n:i:v:u:s: -l namespace:,project:,name:,pipeline:,version:,url:,sys: -- "$@"`
# 如果ARGS 语句失败 直接退出 返回 错误
if [ $? != 0 ]; then
echo "Fail to get args."
exit 1
fi
# 转换参数格式 --long=a => --long a
eval set -- ${ARGS}
while true
do
case "$1" in
-g|--namespace)
NAMESPACE=$2 # 取值赋值
shift 2 # 向后偏移2位 删除第一个参数和参数值
;;
-p|--project)
PROJECT=$2
shift 2
;;
-n|--name)
NAME=$2
shift 2
;;
-i|--pipeline)
PIPELINE=$2
shift 2
;;
-v|--version)
VERSION=$2
shift 2
;;
-u|--url)
URL=$2
shift 2
;;
-s|--sys)
SYSNAME=$2
shift 2
;;
--)
shift
break
;;
esac
done