shell 脚本参数处理
默认参数变量
$#
传递到脚本的参数个数$*
以一个单字符串显示所有向脚本传递的参数 如 "1 2 3"
$@
分别取出参数 如 "1" "2" "3"
$?
上一个命令的退出状态$-
$_
$!
$[0-9]
用户第n个参数参数
常用处理方式
手动处理 只能通过 内建参数来获取处理
getopts 内建工具,不能处理长参数
getopt 支持长短参数
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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。