平常在写shell脚本都是用$1,$2....这种方式来接收参数,然而这种接收参数的方式不但容易忘记且不易于理解和维护。Linux常用的命令都可指定参数名和参数值,然而我们怎样才能给自己的shell脚本也采用参数名和参数值这样的方式来获取参数值呢?而不是通过$1,$2这种方式进行获取。下面的例子定义了短参数名和长参数名两种获取参数值的方式。其实是根据getopt提供的特性进行整理而来。
#!/bin/sh #说明 show_usage="args: [-l , -r , -b , -w] [--local-repository=, --repository-url=, --backup-dir=, --webdir=]" #参数 # 本地仓库目录 opt_localrepo="" # git仓库url opt_url="" # 备份目录 opt_backupdir="" # web目录 opt_webdir="" GETOPT_ARGS=`getopt -o l:r:b:w: -al local-repository:,repository-url:,backup-dir:,webdir: -- "$@"` eval set -- "$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;; -b|--backup-dir) opt_backupdir=$2; shift 2;; -w|--webdir) opt_webdir=$2; shift 2;; --) break ;; *) echo $1,$2,$show_usage; break ;; esac done if [[ -z $opt_localrepo || -z $opt_url || -z $opt_backupdir || -z $opt_webdir ]]; then echo $show_usage echo "opt_localrepo: $opt_localrepo , opt_url: $opt_url , opt_backupdir: $opt_backupdir , opt_webdir: $opt_webdir" exit 0 fi
通过这种方式进行参数值的获取,更易于理解和维护。