shell 脚本参数处理
默认参数变量
$#
传递到脚本的参数个数$*
以一个单字符串显示所有向脚本传递的参数 如 "1 2 3"
$@
分别取出参数 如 "1" "2" "3"
$?
上一个命令的退出状态$-
$_
$!
$[0-9]
用户第n个参数参数
常用处理方式
getopt
系统内建的工具,只能处理短参数
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