平常在寫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
通過這種方式進行參數值的獲取,更易於理解和維護。
