?? getopts
字號:
getopts 命令是 Korn/POSIX shell 的內置命令,用來從參數列表檢索選項以及選項參數。選項由一個+(加號)或者是由一個-(減號)后跟一個字符開始。一個既不是以+,也不是以-開始的選項結束選項字符串。每次調用 getopts 命令時,它將下一個選項的值放置在名稱 內,并將下一個要處理的參數的索引置于 shell 變量 OPTIND 中。一旦調用了 shell , OPTIND 將初始化為1。當選項以 +開頭,則+ 將預先設為名稱中的值。如果選項字符串中的字符后面帶有“:”(冒號),則預期此選項將帶有參數。當選項需要選項參數時,getopts 命令就將其置于變量 OPTARG 中。當查找到 選項字符串所不包含的選項字符,或者查找到的選項沒有所需的選項參數時: * 如果選項字符串不以:(冒號)開頭, o 名稱 將會被設置為 ?(問號)字符, o OPTARG. 將被取消設置,并且 o 診斷消息將被寫入到標準錯誤中。這種情況被認為是在將參數傳遞給所調用的應用程序的過程中所檢測到的錯誤,而不是在處理 getopts 命令的過程中所發生的錯誤;如上所述,寫入診斷消息,但退出狀態將變為零。 * 如果選項字符串以 :(冒號)開頭, o 名稱 將被設為 ? (問號)字符,這是對未知的選項來說的,或者為缺少的所需選項設為:(冒號)字符, o OPTARG 將被設置為已查找到的選項字符,并且 o 標準錯誤中將不寫入任何輸出。以下任何字符都可以識別選項結尾:特殊選項- -,查找到不以-,或者+為開頭的參數,或者遇到錯誤。當遇到選項結尾時: * getopts 命令將退出運行,并且返回值大于零, * OPTARG 將被設置為第一個非選項參數索引,在這種情況下,如果第一個 - - 參數之前未出現其它非選項參數,將認為它是選項參數,或者如果沒有非選項參數,設置為值 $#+1, * 名稱將被設置為? (問號)字符,參數選項字符串 包含 getopts 命令識別的選項字符串。如果字符后帶有冒號,則預期選項將帶有參數,應該以單獨參數的形式提供此參數。可以用空格將選項與參數分隔開。如果選項字符是未知的或者選項參數丟失,則選項字符串中的第一個字符將決定 getopts 命令的行為。 注意:應用程序不應該將問號和冒號字符作為選項字符。使用其它非字母數字的字符會產生不明的結果。名稱 由 getopts 命令對查找到的選項字符設置。參數 ... 一個或多個被空格分隔的字符串,由 getopts 命令校驗是否是合法選項。如果省略參數 ,就使用位置參數。有關位置參數的更多信息,請參見 Korn Shell 中的 參數替換。 注意: 一般來說,不必將參數指定為 getopts 命令的一部分,但在進行腳本調試時可能會有所幫助。退出狀態此命令返回下列出口值:0 查找到由選項字符串指定的或未指定的選項。>0 遇到選項結束或發生錯誤。示例 1. 下列 getopts 命令規定 a、b 和 c 為有效選項,并且選項 a 和 c 帶有參數: getopts a:bc: OPT 2. 下列 getopts 命令指定 a、b 以及 c 為有效選項, 并且選項 a 和 b 帶有參數,而且 getopts 在命令行遇到為定義的選項時,它將 OPT 的值設置為 ?: getopts :a:b:c OPT 3. 下列腳本分析和顯示其參數: aflag= bflag= while getopts ab: name do case $name in a) aflag=1;; b) bflag=1 bval="$OPTARG";; ?) printf"Usage: %s: [-a] [-b value] args\n" $0 exit 2;; esac done if [ ! -z "$aflag" ]; then printf "Option -a specified\ n" fi if [ ! -z "$bflag" ]; then printf'Option -b "%s" specified\ n' "$bval" fi shift $(($OPTIND -1)) printf "Remaining arguments are: %s\n" "$*"
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -