Shell-具名参数传参

一般参数过多的时候,为了方便理解,可以将参数具名化,而且还可以摆脱顺序限制。

#!/bin/sh
#说明
show_usage="args:[-l, -r] [--local-repository=, --repository-url=]"
#参数
#本地仓库目录
opt_localrepo=""
#git仓库url
opt_url=""
GETOPT_ARGS=`getopt -o l:r: -al local-repository:,repository-url: -- "$@"`eval set -- "$GETOPT_ARGS"# echo "GETOPT_ARGS ===> $GETOPT_ARGS"
#获取参数
while [ -n "$1" ]do
        case "$1" in
            -l|--local-repository) opt_localrepo=$2; shift 2;;❹
            -r|--repository-url) opt_url=$2; shift 2;;
            --) break ;;
            *) echo $1,$2,$show_usage; break ;;
        esac
done
#对必填项做输入检查,此处假设都为必填项
if [[ -z $opt_localrepo || -z $opt_url ]]; then❺
    echo $show_usage
    echo "opt_localrepo: $opt_localrepo, opt_url: $opt_url"
    exit 0
fi
# 一切正常的话输出取值结果
echo "opt_localrepo: $opt_localrepo, opt_url: $opt_url"

参考:

❶ getopt命令并不是bash的内建命令,它是由util-linux包提供的外部命令。

getopt --help

Usage:
 getopt <optstring> <parameters>
 getopt [options] [--] <optstring> <parameters>
 getopt [options] -o|--options <optstring> [options] [--] <parameters>

Parse command options.

Options:
 -a, --alternative             允许长选项使用单横线'-'形式来接收参数
 -l, --longoptions <longopts>  待确认的长选项名,后面必须紧跟标识
 -n, --name <progname>         报告错误的名称,目前不是很懂
 -o, --options <optstring>     待确认的短选项
 -q, --quiet                   不报告错误(如果有)
 -Q, --quiet-output            不输出错误(如果有)
 -s, --shell <shell>           将引用约定设置为<shell>
 -T, --test                    测试getopt(1)版本
 -u, --unquoted                不要引用输出
 -h, --help                    显示帮助
 -V, --version                 显示版本

❷类似js中的eval,可以把字符串当命令执行

Linux shell if [ -n ] 正确使用方法

shift 2,表示将原来的$3变为$1

❺与-n相反,当串的长度为0时为真

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值