getopts 智慧位置引數解析

選項

optstring:要識別的選項字元

如果一個字元後面跟一個冒號,那麼該選項應該有一個引數,該引數應該用空格分隔。冒號(:)和問號(?)不能用作選項字元。

每次呼叫它時,getopts 將下一個選項放在 shell 變數名中,如果名稱不存在則初始化名稱,以及要處理到變數 OPTIND 中的下一個引數的索引。每次呼叫 shell 或 shell 指令碼時,OPTIND 都會初始化為 1

當一個選項需要一個引數時,getopts 將該引數放入變數 OPTARG 中。shell 不會自動重置 OPTIND; 如果要使用一組新引數,則必須在同一 shell 呼叫內多次呼叫 getopts 之間手動重置。

遇到選項結束時,getopts 將以大於零的返回值退出。

OPTIND 設定為第一個非選項引數的索引,name 設定為 ?getopts 通常會解析位置引數,但如果在 args 中給出了更多的引數,則 getopts 會解析這些引數。

getopts 可以通過兩種方式報告錯誤。如果 optstring 的第一個字元是冒號(:),則使用靜默錯誤報告。在正常操作中,遇到無效選項或缺少選項引數時,將列印診斷訊息。

如果變數 OPTERR 設定為 0,則即使 optstring 的第一個字元不是冒號,也不會顯示錯誤訊息。

如果看到無效選項,則 getopts? 放入 name,如果不是靜音,則列印錯誤訊息並取消設定 OPTARG。如果 getopts 是靜默的,則找到的選項字元放在 OPTARG 中,並且不會列印診斷訊息。

如果找不到必需的引數,並且 getopts 沒有靜音,則在 name 中放置一個問號(?),取消設定 OPTARG,並列印診斷訊息。如果 getopts 是靜音的,則在名稱中放置冒號(:),並將 OPTARG 設定為選項字元。