加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell 脚本参数处理

发布时间:2020-12-15 16:24:41 所属栏目:安全 来源:网络整理
导读:shell 脚本参数处理 默认参数变量 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数 如 "1 2 3" $@ 分别取出参数 如 "1" "2" "3" $? 上一个命令的退出状态 $- $_ $! $[0-9] 用户第n个参数参数 常用处理方式 手动处理 只能通过 内建参数来

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读