2013-06-02 187 views
1

我如何可以傳遞參數給一個腳本這樣的:將參數傳遞給腳本

scriptname.ksh -p param1 -n param2 

我的意思是我怎麼能告訴我的腳本由-p-n字符定義了兩個參數來工作?

+4

使用'getopts' ... – devnull

回答

6
while getopts ":p:n:" Option; do 
    case $Option in 
    p) 
     # do stuff 
     # to access param1, use variable $OPTARG 
     ;; 
    n) 
     # do stuff 
     # $OPTARG again to access param2 
     ;; 
    \?) 
     # default 
     ;; 
    esac 
done 
shift $(($OPTIND - 1)) 

在第一個參數getopts

  • 領先: supresses getopts自己內部的錯誤報告
  • 字母表示的選項
  • 如果一個字母后跟:,這意味着它預計$ OPTARG

more information

getopts提供了用於更改選項自變量名稱的功能。

注意,getopts的無法處理「長表」參數(--help等)

+0

我想補充一個「默認」分支的case語句:')錯誤「無效選項: - $ OPTARG「; show_help;退出1 ;;' –

+0

@glennjackman謝謝,補充:) –