Man page - getopt(1)

Packages contains this manual

Available languages:

en fr es pl ja uk ro sr de

Manual

GETOPT

名 前
書 åŧ
čĒŦ 明
ã‚Ē プ ã‚ˇ ョ ãƒŗ
構 文 č§Ŗ 析
å‡ē 力
ク り ãƒŧ ト
゚ キ ãƒŖ ニ ãƒŗ グ ãƒĸ ãƒŧ ド
äē’ æ› 性
čŋ” り 値
ᔍ 例
į’° åĸƒ 変 数
バ グ
äŊœ 者
é–ĸ 逪 項 į›Ž
å…Ĩ 手 æ–š æŗ•

名 前

getopt - ã‚ŗ マ ãƒŗ ド ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ を č§Ŗ 析 す る (åŧˇ 化 į‰ˆ )

書 åŧ

getopt optstring parameters
getopt
[options] [ -- ] optstring parameters
getopt
[options] -o | --options optstring [options] [ -- ] parameters

čĒŦ 明

getopt は 、 ã‚ŗ マ ãƒŗ ド ナ イ ãƒŗ ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ を 分 č§Ŗ ( 構 文 č§Ŗ 析 ) し ãĻ 、 ã‚ˇ ェ ãƒĢ 上 ぎ 手 įļš ã ãĢ よ る č§Ŗ 析 äŊœ æĨ­ を 厚 易 ãĢ し た り 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ が 有 劚 か お う か を チ ェ ッ ク し た り す る た め ãĢ äŊŋ ᔍ す る 。 getopt は 、 そ う し た こ と を 行 う ぎ ãĢ GNU getopt (3) ぎ ãƒĢ ãƒŧ テ ã‚Ŗ ãƒŗ を äŊŋ ãŖ ãĻ い る 。

getopt を å‘ŧ ãŗ å‡ē す と き ãĢ äŊŋ ᔍ す る パ ナ ãƒĄ ãƒŧ ã‚ŋ は 、 2 つ ぎ 部 分 ãĢ 分 け る こ と が で き る 。 す ãĒ わ ãĄ 、 getopt が č§Ŗ 析 を 行 う と き ぎ 動 äŊœ を 変 更 す る ã‚Ē プ ã‚ˇ ョ ãƒŗ 部 分 (上 記 「 書 åŧ 」 ぎ options と opstring ) と 、 č§Ŗ 析 ぎ 寞 蹥 ãĢ ãĒ る パ ナ ãƒĄ ãƒŧ ã‚ŋ 部 分 (上 記 「 書 åŧ 」 ぎ parameters ) ぎ 2 つ で あ る 。 2 į•Ē į›Ž ぎ 部 分 は 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ で は ãĒ い 最 初 ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ で 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ åŧ• き 数 で も ãĒ い も ぎ か ら 始 ぞ る か 、 あ る い は 、 ’ -- ’ が 最 初 ãĢ įž れ た äŊ įŊŽ ãŽ į›´ 垌 か ら 始 ぞ る 。 ãĒ お 、 1 į•Ē į›Ž ぎ 部 分 ãĢ ’ -o ’ や ’ --options ’ ã‚Ē プ ã‚ˇ ョ ãƒŗ が 存 在 し ãĒ い å ´ 合 は (荺 æŗ¨ : そ し ãĻ 、 äģ– ãŽ ã‚Ē プ ã‚ˇ ョ ãƒŗ や -- が 存 在 す る ãĒ ら ば 、 そ れ は 「 書 åŧ 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ ぎ įŦŦ 2 ぎ 書 åŧ ãĢ åŊ“ た る )、 2 į•Ē į›Ž ぎ 部 分 ぎ 最 初 ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ が 、 č§Ŗ 析 ぎ 寞 蹥 と ãĒ る ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ を 1 つ ãĢ ぞ と め た ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ ã‚ē 文 字 列 (す ãĒ わ ãĄ optsting ) と し ãĻ äŊŋ ᔍ さ れ る 。

[ 荺 æŗ¨ ]

「 書 åŧ 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ ぎ įŦŦ 3 ぎ 書 åŧ で 、 č§Ŗ 析 ぎ 寞 蹥 ãĢ ãĒ る パ ナ ãƒĄ ãƒŧ ã‚ŋ を ã‚Ē プ ã‚ˇ ョ ãƒŗ か ら 始 め る と き は 、 そ ぎ 前 ãĢ ’ -- ’ を įŊŽ ã åŋ… čρ が あ る 。 そ う し ãĒ い と 、 getopt č‡Ē äŊ“ ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ と čǤ č§Ŗ さ れ る こ と ãĢ ãĒ る 。 č§Ŗ 析 ぎ 寞 蹥 を フ ã‚Ą イ ãƒĢ 名 ãĒ お か ら 始 め る と き は 、 ’ -- ’ を įŊŽ ã‹ ãĒ く ãĻ も よ い 。

į’° åĸƒ 変 数 GETOPT_COMPATIBLE が 設 厚 さ れ ãĻ い る å ´ 合 や 、 最 初 ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ が ã‚Ē プ ã‚ˇ ョ ãƒŗ で は ãĒ い å ´ 合 (す ãĒ わ ãĄ 、 ’ - ’ で 始 ぞ ãŖ ãĻ い ãĒ い å ´ 合 で 、 こ れ は 「 書 åŧ 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ ぎ įŦŦ 1 ぎ 書 åŧ で あ る )、 こ ぎ getopt は äģ– ãŽ バ ãƒŧ ジ ョ ãƒŗ ぎ getopt (1) と äē’ æ› 性 ぎ あ る å‡ē 力 を į”Ÿ 成 す る 。 ãĒ お 、 そ ぎ å ´ 合 で も や は り パ ナ ãƒĄ ãƒŧ ã‚ŋ ぎ ä¸Ļ ず æ›ŋ え は 行 う し 、 指 厚 が äģģ æ„ ぎ åŧ• き 数 ぎ čĒ 識 も す る (čŠŗ į´° ãĢ つ い ãĻ は 、 「 äē’ æ› 性 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ を 参 į…§ し ãĻ い た だ き た い )。

åž“ æĨ ぎ getopt (1) ぎ 原 čŖ… で は 、 åŧ• き 数 ãĒ お ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ で は ãĒ い パ ナ ãƒĄ ãƒŧ ã‚ŋ ぎ 中 ãĢ 、 ホ ワ イ ト ゚ ペ ãƒŧ ゚ (荺 æŗ¨ : įŠē į™Ŋ 、 ã‚ŋ ブ 、 攚 行 ãĒ お ) や (ã‚ˇ ェ ãƒĢ å›ē 有 ぎ ) į‰š 掊 文 字 ãĒ お が あ る と 、 そ れ ãĢ 寞 å‡Ļ す る こ と が で き ãĒ か ãŖ た 。 こ ぎ 問 題 を č§Ŗ æąē す る た め ãĢ 、 こ ぎ 原 čŖ… で は 、 ク り ãƒŧ ト し た å‡ē 力 を į”Ÿ 成 で き る よ う ãĢ ãĒ ãŖ ãĻ い る が 、 そ う し た å‡ē 力 は 、 ã‚ˇ ェ ãƒĢ ãĢ よ ãŖ ãĻ も う 一 åēĻ č§Ŗ 釈 さ れ る åŋ… čρ が あ る (た い ãĻ い は 、 そ ぎ た め ãĢ eval ã‚ŗ マ ãƒŗ ド を äŊŋ ᔍ す る 。 [荺 æŗ¨ : も ãŖ と čŠŗ し く 言 う と 、 PARAM=$(getopt -o ’a:b::c’ -- "$@"); eval set -- "$PARAM" と い ãŖ た æ–š æŗ• を ᔍ い ãĻ 、 äŊ įŊŽ ãƒ‘ ナ ãƒĄ ãƒŧ ã‚ŋ を 再 構 成 す る ])。 こ ぎ å‡ē 力 åŊĸ åŧ を äŊŋ え ば 、 ホ ワ イ ト ゚ ペ ãƒŧ ゚ や į‰š 掊 文 字 を äŋ č­ˇ す る こ と ãĢ は ãĒ る が 、 そ れ ãĢ は getopt を äģ– ãŽ バ ãƒŧ ジ ョ ãƒŗ と も は や äē’ æ› 性 ぎ ãĒ い åŊĸ で å‘ŧ ãŗ å‡ē さ ãĒ け れ ば ãĒ ら ãĒ い (す ãĒ わ ãĄ 、 「 書 åŧ 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ ぎ įŦŦ 2 や įŦŦ 3 ぎ 書 åŧ だ )。 åžĄ äŊŋ ᔍ ぎ ã‚ˇ ゚ テ ム ãĢ getopt (1) ぎ こ ぎ åŧˇ 化 į‰ˆ が イ ãƒŗ ゚ ト ãƒŧ ãƒĢ さ れ ãĻ い る か お う か を įŸĨ る ãĢ は 、 専 ᔍ ぎ テ ゚ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ ( -T ) を äŊŋ ᔍ す れ ば よ い 。

ã‚Ē プ ã‚ˇ ョ ãƒŗ

-a , --alternative

ロ ãƒŗ グ ã‚Ē プ ã‚ˇ ョ ãƒŗ を 1 個 ぎ ’ - ’ で 始 め る こ と が で き る よ う ãĢ す る 。

-h , --help

ヘ ãƒĢ プ を 襨 į¤ē し ãĻ 、 įĩ‚ äē† ã™ る 。 そ れ äģĨ 上 äŊ• も å‡ē 力 し ãĒ い 。

-l , --longoptions longopts

čĒ 識 す ず き ロ ãƒŗ グ (複 数 ぎ 文 字 か ら ãĒ る ) ã‚Ē プ ã‚ˇ ョ ãƒŗ įž¤ を 指 厚 す る 。 2 個 äģĨ 上 ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ 名 を 、 ã‚ŗ ãƒŗ マ で åŒē 切 ãŖ ãĻ 一 åēĻ ãĢ 指 厚 す る こ と が で き る 。 こ ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ は 複 数 回 指 厚 す る こ と も で き 、 そ ぎ å ´ 合 も longopts が čŋŊ 加 さ れ ãĻ い く 。 longouts 中 ぎ 各 ロ ãƒŗ グ ã‚Ē プ ã‚ˇ ョ ãƒŗ 名 ぎ 垌 ろ ãĢ は 、 ã‚ŗ ロ ãƒŗ を įļš ã‘ る こ と が で き る 。 ã‚ŗ ロ ãƒŗ が 1 個 ぎ と き は 、 åŧ• き 数 が åŋ… 須 だ と い う こ と で あ り 、 2 個 ぎ と き は 、 åŧ• き 数 は äģģ æ„ 、 す ãĒ わ ãĄ 、 あ ãŖ ãĻ も ãĒ く ãĻ も よ い と い う こ と で あ る 。

[ 荺 æŗ¨ ]

ロ ãƒŗ グ ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ ãŋ を äŊŋ い 、 ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ を 全 く äŊŋ わ ãĒ い å ´ 合 は 、 -o ã‚Ē プ ã‚ˇ ョ ãƒŗ ãĢ įŠē 文 字 列 を æ¸Ą す こ と で ( -o ’’ ) そ れ を 明 į¤ē įš„ ãĢ åŽŖ 言 し ãĒ け れ ば ãĒ ら ãĒ い 。 「 バ グ 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ を 参 į…§ 。

-n , --name progname

getopt (3) ãƒĢ ãƒŧ テ ã‚Ŗ ãƒŗ が 、 エ ナ ãƒŧ を 通 įŸĨ す る 際 ãĢ äŊŋ ᔍ す る プ ロ グ ナ ム 名 を 指 厚 す る 。 getopt (1) č‡Ē äŊ“ ãĢ é–ĸ す る エ ナ ãƒŧ は (荺 æŗ¨ : た と え ば 、 getopt ã‚ŗ マ ãƒŗ ド ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ が 間 違 ãŖ ãĻ い る å ´ 合 ãĒ お は )、 や は り getopt ã‚ŗ マ ãƒŗ ド が エ ナ ãƒŧ ぎ į™ē į”Ÿ 元 と し ãĻ å ą 告 さ れ る こ と ãĢ æŗ¨ 意 し ãĻ い た だ き た い 。

-o , --options shortopts

čĒ 識 す ず き ã‚ˇ ョ ãƒŧ ト (1 文 字 か ら ãĒ る ) ã‚Ē プ ã‚ˇ ョ ãƒŗ įž¤ を 指 厚 す る 。 こ ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ が 指 厚 さ れ ãĻ い ãĒ い å ´ 合 は 、 ’ - ’ で 始 ぞ ら ãĒ い (そ し ãĻ 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ åŧ• 数 で も ãĒ い ) getopt ぎ 最 初 ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ が 、 ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ を 一 つ ãĢ ぞ と め た ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ ã‚ē 文 字 列 と し ãĻ äŊŋ ᔍ さ れ る (荺 æŗ¨ : 「 書 åŧ 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ ぎ įŦŦ 2 ぎ 書 åŧ )。 shortopts 中 ぎ ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ 各 文 字 ぎ 垌 ろ ãĢ は 、 ã‚ŗ ロ ãƒŗ を įļš ã‘ る こ と が で き る 。 ã‚ŗ ロ ãƒŗ が 1 個 ぎ と き は 、 åŧ• き 数 が åŋ… 須 だ と い う こ と で あ り 、 2 個 ぎ と き は 、 åŧ• き 数 は äģģ æ„ 、 す ãĒ わ ãĄ 、 あ ãŖ ãĻ も ãĒ く ãĻ も よ い と い う こ と で あ る 。 ぞ た 、 shortopts ぎ 先 é ­ ãĢ ’ + ’ や ’ - ’ と い う 文 字 を äģ˜ ã‘ れ ば 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ č§Ŗ 析 ぎ äģ• æ–š や 、 å‡ē 力 ぎ į”Ÿ 成 ぎ äģ• æ–š を 変 更 す る こ と が で き る (čŠŗ į´° ãĢ つ い ãĻ は 、 「 ゚ キ ãƒŖ ニ ãƒŗ グ ãƒĸ ãƒŧ ド 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ を 参 į…§ す る こ と )。

-q , --quiet

getopt(3) ぎ å‡ē す エ ナ ãƒŧ ãƒĄ ッ ã‚ģ ãƒŧ ジ を 襨 į¤ē し ãĒ い 。

-Q , --quiet-output

通 常 ぎ å‡ē 力 を į”Ÿ 成 し ãĒ い 。 そ れ で も 、 -q も 同 時 ãĢ 指 厚 し ãĒ い か ぎ り 、 getopt (3) ãĢ よ る エ ナ ãƒŧ å ą 告 は 行 わ れ る 。

-s , --shell shell

ク り ãƒŧ ト æ–š åŧ を shell ぎ も ぎ ãĢ す る 。 -s ã‚Ē プ ã‚ˇ ョ ãƒŗ が 指 厚 さ れ ãĻ い ãĒ い å ´ 合 は 、 BASH ぎ ク り ãƒŧ ト æ–š åŧ が äŊŋ わ れ る 。 指 厚 可 čƒŊ ãĒ åŧ• き 数 は 、 įž 在 ぎ と こ ろ ’ sh ’, ’ bash ’, ’ csh ’, ’ tcsh ’ で あ る 。

-T , --test

įž 在 äŊŋ ãŖ ãĻ い る getopt (1) が 、 åŧˇ 化 バ ãƒŧ ジ ョ ãƒŗ か 古 い バ ãƒŧ ジ ョ ãƒŗ か を テ ゚ ト す る 。 こ ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ は äŊ• も å‡ē 力 し ãĒ い が 、 エ ナ ãƒŧ ゚ テ ãƒŧ ã‚ŋ ゚ を 4 ãĢ す る 。 getopt(1) ぎ äģ– ãŽ 原 čŖ… や 、 こ ぎ バ ãƒŧ ジ ョ ãƒŗ で も į’° åĸƒ 変 数 GETOPT_COMPATIBLE が 設 厚 さ れ ãĻ い る å ´ 合 は 、 ’ -- ’ を čŋ” し ãĻ 、 エ ナ ãƒŧ ゚ テ ãƒŧ ã‚ŋ ゚ を 0 ãĢ す る 。

-u , --unquoted

å‡ē 力 を ク り ãƒŧ ト し ãĒ い 。 こ ぎ ãƒĸ ãƒŧ ド で は 、 ホ ワ イ ト ゚ ペ ãƒŧ ゚ や (ã‚ˇ ェ ãƒĢ ãĢ よ ãŖ ãĻ 様 々 ãĒ ) į‰š 掊 文 字 が 、 ( getopt (1) ぎ äģ– ãŽ 原 čŖ… ãĢ お け る と 同 様 ãĢ ) 望 ぞ し か ら ãŦ æˇˇ äšą を åŧ• き čĩˇ こ し か ね ãĒ い こ と ãĢ 、 æŗ¨ 意 し ãĻ い た だ き た い 。

-V , --version

バ ãƒŧ ジ ョ ãƒŗ 情 å ą を 襨 į¤ē し ãĻ 、 įĩ‚ äē† ã™ る 。 そ れ äģĨ 上 äŊ• も å‡ē 力 し ãĒ い 。

構 文 č§Ŗ 析

こ ぎ ã‚ģ ク ã‚ˇ ョ ãƒŗ は 、 getopt ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ ぎ 2 į•Ē į›Ž ぎ 部 分 (「 書 åŧ 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ ぎ parameters ) ぎ 書 åŧ ãĢ つ い ãĻ čŠŗ čŋ° し ãĻ い る 。 æŦĄ ぎ ã‚ģ ク ã‚ˇ ョ ãƒŗ (「 å‡ē 力 」 ) で は 、 į”Ÿ 成 さ れ る å‡ē 力 ãĢ つ い ãĻ čĒŦ 明 す る 。 一 čˆŦ ãĢ getopt は 、 ã‚ˇ ェ ãƒĢ é–ĸ 数 や ã‚ˇ ェ ãƒĢ ゚ ク ãƒĒ プ ト ぎ 中 で 、 そ ぎ åŧ• き 数 を č§Ŗ 析 す る た め ãĢ äŊŋ う も ぎ ãĒ ぎ で 、 こ こ で 取 り 上 げ る パ ナ ãƒĄ ãƒŧ ã‚ŋ įž¤ が 、 元 は と 言 え ば 、 ã‚ˇ ェ ãƒĢ é–ĸ 数 を å‘ŧ ん だ と き ãĢ æ¸Ą し た パ ナ ãƒĄ ãƒŧ ã‚ŋ だ ãŖ た と い う ぎ は 、 ご く 晎 通 ぎ こ と で あ る 。 そ こ で 、 気 を äģ˜ ã‘ ãĒ け れ ば ãĒ ら ãĒ い こ と が あ る 。 ã‚ˇ ェ ãƒĢ é–ĸ 数 を å‘ŧ ん だ と き ãĢ æ¸Ą す 各 パ ナ ãƒĄ ãƒŧ ã‚ŋ は 、 getopt ãĢ æ¸Ą さ れ る パ ナ ãƒĄ ãƒŧ ã‚ŋ ãƒĒ ゚ ト 中 ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ と 1 寞 1 で 寞 åŋœ し ãĻ い ãĒ け れ ば ãĒ ら ãĒ い ぎ だ (「 ᔍ 例 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ を 参 į…§ )。 す ず ãĻ ぎ č§Ŗ 析 は 、 GNU getopt (3) ぎ ãƒĢ ãƒŧ テ ã‚Ŗ ãƒŗ ãĢ よ ãŖ ãĻ 行 わ れ る 。

[ 荺 æŗ¨ ]

getopt ぎ äŊŋ い æ–š ぎ į°Ą 単 ãĒ 例 を 挙 げ る 。 た と え ば 、 ã‚ˇ ェ ãƒĢ é–ĸ 数 や ã‚ˇ ェ ãƒĢ ゚ ク ãƒĒ プ ト 中 ãĢ æŦĄ ぎ よ う ãĢ 書 く 。

PARAM=$(getopt -o ’a:b::c’ -- "$@")
eval set -- "$PARAM"

こ ぎ よ う ãĢ し ãĻ 、 ã‚ˇ ェ ãƒĢ é–ĸ 数 や ゚ ク ãƒĒ プ ト ãĢ æ¸Ą さ れ た åŧ• き 数 įž¤ を 、 äŊ įŊŽ ãƒ‘ ナ ãƒĄ ãƒŧ ã‚ŋ を 刊 ᔍ し ãĻ 、 お れ が ã‚Ē プ ã‚ˇ ョ ãƒŗ で 、 お れ が そ ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ åŧ• き 数 、 お れ が そ れ äģĨ 外 か 、 わ か り や す く 、 å‡Ļ ᐆ し や す い よ う ãĢ 再 構 成 す る わ け で あ る 。 čŠŗ し く は 、 「 å‡ē 力 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ や 、 「 ᔍ 例 」 で čŋ° ず ãĻ い る ゚ ク ãƒĒ プ ト ぎ čĻ‹ æœŦ を 参 į…§ し ãĻ い た だ き た い 。

「 ã‚ˇ ェ ãƒĢ é–ĸ 数 を å‘ŧ ん だ と き ãĢ æ¸Ą す 各 パ ナ ãƒĄ ãƒŧ ã‚ŋ は 、 getopt ãĢ æ¸Ą さ れ る パ ナ ãƒĄ ãƒŧ ã‚ŋ ãƒĒ ゚ ト 中 ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ と 1 寞 1 で 寞 åŋœ し ãĻ い ãĒ け れ ば ãĒ ら ãĒ い 」 と い う ぎ は 、 ã‚ˇ ェ ãƒĢ é–ĸ 数 や ã‚ˇ ェ ãƒĢ ゚ ク ãƒĒ プ ト ãĢ æ¸Ą す パ ナ ãƒĄ ãƒŧ ã‚ŋ で も 、 そ れ が įŠē į™Ŋ ãĒ お を åĢ む よ う ãĒ ら ク り ãƒŧ ト し ãĒ け れ ば ãĒ ら ãĒ い ぎ は も ãĄ ろ ん 、 äģĨ 下 で čĒŦ 明 す る よ う ãĒ getopt ã‚ŗ マ ãƒŗ ド ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ ぎ 書 åŧ ãĢ も åž“ ãŖ ãĻ い ãĒ け れ ば ãĒ ら ãĒ い と い う こ と で あ る 。 た と え ば 、 åŧ• き 数 が äģģ æ„ ぎ ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ -b ãĢ åŧ• き 数 を 指 厚 す る å ´ 合 は 、 -bXXX ãĒ お と 、 間 ãĢ įŠē į™Ŋ を įŊŽ ã‹ ず ãĢ 指 厚 し ãĒ け れ ば ãĒ ら ãĒ い 。

パ ナ ãƒĄ ãƒŧ ã‚ŋ įž¤ は åˇĻ か ら åŗ へ č§Ŗ 析 さ れ る 。 各 パ ナ ãƒĄ ãƒŧ ã‚ŋ は 、 ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ 、 ロ ãƒŗ グ ã‚Ē プ ã‚ˇ ョ ãƒŗ 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ åŧ• き 数 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ ãĢ 分 剞 分 類 さ れ る 。

単 į´” ãĒ ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ は 、 1 個 ぎ ’ - ’ ãĢ 1 個 ぎ ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ 文 字 が įļš ã も ぎ で あ る 。 ã‚Ē プ ã‚ˇ ョ ãƒŗ が åŧ• き 数 を åŋ… 須 ãĢ し ãĻ い る å ´ 合 は 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ 文 字 ぎ į›´ 垌 ãĢ įļš ã‘ ãĻ も よ く 、 æŦĄ ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ と し ãĻ (す ãĒ わ ãĄ 、 ã‚ŗ マ ãƒŗ ド ナ イ ãƒŗ 上 で ホ ワ イ ト ゚ ペ ãƒŧ ゚ を 間 ãĢ įŊŽ ã„ ãĻ ) 書 い ãĻ も よ い 。 ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ åŧ• き 数 が äģģ æ„ ぎ å ´ 合 は 、 そ れ が 存 在 す る ãĒ ら 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ 文 字 ぎ į›´ 垌 ãĢ įļš ã‘ ãĒ け れ ば ãĒ ら ãĒ い 。

1 個 ぎ ’ - ’ ぎ 垌 ろ ãĢ 数 個 ぎ ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ を ぞ と め ãĻ 指 厚 す る こ と も で き る 。 た だ し 、 最 垌 ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ äģĨ 外 ぎ す ず ãĻ ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ が 、 åŋ… 須 や äģģ æ„ ぎ åŧ• き 数 を 取 ら ãĒ い と い う æĄ äģļ が あ る (例 外 と し ãĻ 、 最 垌 ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ は åŧ• き 数 を 取 る こ と が で き る )。

ロ ãƒŗ グ ã‚Ē プ ã‚ˇ ョ ãƒŗ は 、 通 常 ’ -- ’ で 始 ぞ り 、 ロ ãƒŗ グ ã‚Ē プ ã‚ˇ ョ ãƒŗ 名 が そ れ ãĢ įļš ã 。 ã‚Ē プ ã‚ˇ ョ ãƒŗ が åŧ• き 数 を åŋ… 須 ãĢ し ãĻ い る å ´ 合 は 、 ロ ãƒŗ グ ã‚Ē プ ã‚ˇ ョ ãƒŗ 名 ぎ į›´ 垌 ãĢ ’ = ’ で åŒē 切 ãŖ ãĻ įļš ã‘ ãĻ も よ く 、 æŦĄ ぎ åŧ• き 数 と し ãĻ (す ãĒ わ ãĄ 、 ã‚ŗ マ ãƒŗ ド ナ イ ãƒŗ 上 で ホ ワ イ ト ゚ ペ ãƒŧ ゚ を 間 ãĢ įŊŽ ã„ ãĻ ) 書 い ãĻ も よ い 。 ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ åŧ• き 数 が äģģ æ„ ぎ å ´ 合 は 、 そ れ が 存 在 す る ãĒ ら 、 ロ ãƒŗ グ ã‚Ē プ ã‚ˇ ョ ãƒŗ 名 ぎ į›´ 垌 ãĢ ’ = ’ で åŒē 切 ãŖ ãĻ įļš ã‘ ãĒ け れ ば ãĒ ら ãĒ い (’ = ’ を įļš ã‘ た も ぎ ぎ 、 そ ぎ 垌 ãĢ äŊ• も 指 厚 し ãĒ い å ´ 合 は 、 åŧ• き 数 が 存 在 し ãĒ い か ぎ よ う ãĢ č§Ŗ 釈 さ れ る 。 こ れ は ãĄ ょ ãŖ と し た バ グ で あ る 。 「 バ グ 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ を 参 į…§ )。 ロ ãƒŗ グ ã‚Ē プ ã‚ˇ ョ ãƒŗ は 、 ៭ į¸Ž し ãĻ も äģ– ãŽ ã‚Ē プ ã‚ˇ ョ ãƒŗ と åŒē åˆĨ が äģ˜ ã か ぎ り 、 ៭ į¸Ž で き る 。

’ - ’ で 始 ぞ ãŖ ãĻ い ãĒ い パ ナ ãƒĄ ãƒŧ ã‚ŋ で 、 į›´ 前 ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ åŋ… 須 ぎ åŧ• き 数 で も ãĒ い も ぎ は 、 い ず れ も ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ で あ る 。 ぞ た 、 ’ -- ’ と い う パ ナ ãƒĄ ãƒŧ ã‚ŋ ぎ 垌 ãĢ あ る パ ナ ãƒĄ ãƒŧ ã‚ŋ は 、 常 ãĢ ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ と č§Ŗ 釈 さ れ る 。 į’° åĸƒ 変 数 POSIXLY_CORRECT が 設 厚 さ れ ãĻ い る å ´ 合 や 、 ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ ã‚ē 文 字 列 (荺 æŗ¨ : 「 書 åŧ 」 ぎ optstring ) が ’ + ’ で 始 ぞ ãŖ ãĻ い る å ´ 合 は 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ 最 初 ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ が čĻ‹ つ か ãŖ た 時 į‚š で 、 掋 り ぎ す ず ãĻ ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ は 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ と č§Ŗ 釈 さ れ る 。

å‡ē 力

å‡ē 力 は 、 前 ぎ ã‚ģ ク ã‚ˇ ョ ãƒŗ で čŋ° ず た čρ į´  ぎ (荺 æŗ¨ : す ãĒ わ ãĄ 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ åŧ• き 数 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ ) ã˛ と つ ã˛ と つ ãĢ 寞 し ãĻ į”Ÿ 成 さ れ る 。 å‡ē 力 さ れ る 順 į•Ē は 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ äģĨ 外 は 、 各 čρ į´  が å…Ĩ 力 で 指 厚 さ れ た 順 į•Ē と 同 じ で あ る 。 å‡ē 力 は 、 äē’ æ› (ク り ãƒŧ ト し ãĒ い ) ãƒĸ ãƒŧ ド で 行 う こ と も で き る し 、 ホ ワ イ ト ゚ ペ ãƒŧ ゚ ãĒ お ぎ į‰š 掊 文 字 が 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ åŧ• き 数 や ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ 中 ãĢ あ る å ´ 合 ãĢ 、 そ う し た も ぎ を äŋ č­ˇ す る åŊĸ で 行 う こ と も で き る (「 ク り ãƒŧ ト 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ を 参 į…§ )。 å‡ē 力 は ã‚ˇ ェ ãƒĢ ゚ ク ãƒĒ プ ト 中 で å‡Ļ ᐆ さ れ る 際 ãĢ 、 å‡ē 力 を 構 成 す る 各 čρ į´  が 、 そ れ ぞ れ äģ– ã¨ åŒē åˆĨ さ れ る も ぎ と し ãĻ čĻ‹ え る こ と ãĢ ãĒ る ぎ で 、 (ãģ と ん お ぎ ã‚ˇ ェ ãƒĢ 言 čĒž で shift ã‚ŗ マ ãƒŗ ド を äŊŋ ãŖ ãĻ ) ã˛ と つ ã˛ と つ å‡Ļ ᐆ す る こ と が 可 čƒŊ ãĢ ãĒ る 。 た だ し 、 ク り ãƒŧ ト ãĒ し ぎ ãƒĸ ãƒŧ ド で ぎ こ ぎ å‡Ļ ᐆ は 、 厌 全 で は ãĒ い 。 čρ į´  ãĢ ホ ワ イ ト ゚ ペ ãƒŧ ゚ や į‰š 掊 文 字 が åĢ ぞ れ ãĻ い る と 、 思 い が け ãĒ い と こ ろ で čρ į´  が 分 剞 さ れ ãĻ し ぞ う か も し れ ãĒ い ぎ で あ る 。

た と え ば 、 åŧ• き 数 が åŋ… 須 ãĒ ぎ ãĢ 存 在 し ãĒ い と か 、 æœĒ įŸĨ ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ が あ る と か い う ᐆ į”ą で 、 パ ナ ãƒĄ ãƒŧ ã‚ŋ ぎ č§Ŗ 析 中 ãĢ 問 題 が čĩˇ き た と き は 、 エ ナ ãƒŧ ãƒĄ ッ ã‚ģ ãƒŧ ジ が 標 æē– エ ナ ãƒŧ ãĢ 襨 į¤ē さ れ 、 問 題 を čĩˇ こ し た čρ į´  ãĢ つ い ãĻ は 、 äŊ• も å‡ē 力 さ れ ãĒ い 。 そ し ãĻ 、 ã‚ŧ ロ äģĨ 外 ぎ エ ナ ãƒŧ ゚ テ ãƒŧ ã‚ŋ ゚ が čŋ” さ れ る 。

ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ ãĢ 寞 し ãĻ は 、 1 個 ぎ ’ - ’ と ã‚Ē プ ã‚ˇ ョ ãƒŗ 文 字 が 、 ã˛ と つ ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ と し ãĻ į”Ÿ 成 さ れ る 。 ã‚Ē プ ã‚ˇ ョ ãƒŗ ãĢ åŧ• き 数 が あ る å ´ 合 は 、 æŦĄ ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ は そ ぎ åŧ• き 数 で あ る 。 ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ åŧ• き 数 が äģģ æ„ ãĒ と き 、 そ ぎ åŧ• き 数 が čĻ‹ つ か ら ãĒ か ãŖ た å ´ 合 は 、 ク り ãƒŧ テ ã‚Ŗ ãƒŗ グ ãƒĸ ãƒŧ ド で は 、 æŦĄ ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ が į”Ÿ 成 さ れ る が 、 įŠē ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ ãĢ ãĒ る 。 ク り ãƒŧ ト ãĒ し ぎ ãƒĸ ãƒŧ ド (äē’ æ› ãƒĸ ãƒŧ ド ) で は 、 2 į•Ē į›Ž ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ は į”Ÿ 成 さ れ ãĒ い 。 ãĒ お 、 getopt (1) ぎ äģ– ãŽ 原 čŖ… で は 、 äģģ æ„ ぎ åŧ• 数 を ã‚ĩ ポ ãƒŧ ト し ãĻ い ãĒ い こ と が 多 い 。

1 個 ぎ ’ - ’ ぎ 垌 ろ ãĢ 複 数 ぎ ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ が 指 厚 さ れ ãĻ い る å ´ 合 は 、 各 ã‚Ē プ ã‚ˇ ョ ãƒŗ が そ れ ぞ れ į‹Ŧ įĢ‹ し た パ ナ ãƒĄ ãƒŧ ã‚ŋ と し ãĻ å‡ē 力 さ れ る こ と ãĢ ãĒ る 。

ロ ãƒŗ グ ã‚Ē プ ã‚ˇ ョ ãƒŗ ãĢ 寞 し ãĻ は 、 ’ -- ’ と ᜁ į•Ĩ ãĒ し ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ 名 が ã˛ と つ ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ と し ãĻ į”Ÿ 成 さ れ る 。 こ ぎ 動 äŊœ は 、 å…Ĩ 力 中 で ã‚Ē プ ã‚ˇ ョ ãƒŗ が ៭ į¸Ž さ れ ãĻ い る か お う か や 、 1 個 ぎ ’ - ’ と と も ãĢ 指 厚 さ れ ãĻ い る か お う か (荺 æŗ¨ : -a ã‚Ē プ ã‚ˇ ョ ãƒŗ を äŊŋ ãŖ た å ´ 合 ) と は 、 é–ĸ äŋ‚ が ãĒ い 。 åŧ• き 数 ぎ å‡Ļ ᐆ は 、 ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ å ´ 合 と 同 じ で あ る 。

通 常 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ ぎ å‡ē 力 が į”Ÿ 成 さ れ る ぎ は 、 す ず ãĻ ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ と そ ぎ åŧ• き 数 が į”Ÿ 成 さ れ ãĻ か ら で あ る 。 そ れ か ら 、 ’ -- ’ が 1 個 ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ と し ãĻ į”Ÿ 成 さ れ 、 そ ぎ 垌 で 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ が 、 čĻ‹ つ か ãŖ た 順 åē ã§ 、 そ れ ぞ れ į‹Ŧ įĢ‹ し た パ ナ ãƒĄ ãƒŧ ã‚ŋ と し ãĻ į”Ÿ 成 さ れ る 。 た だ し 、 ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ ã‚ē 文 字 列 ぎ 最 初 ぎ 文 字 が ’ - ’ ぎ と き だ け は åˆĨ で 、 そ ぎ å ´ 合 は 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ ぎ å‡ē 力 は 、 å…Ĩ 力 中 ぎ そ れ が čĻ‹ つ か ãŖ た äŊ įŊŽ ã§ į”Ÿ 成 さ れ る (こ ぎ 動 äŊœ は 、 「 書 åŧ 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ ぎ įŦŦ 1 ぎ 書 åŧ が äŊŋ ᔍ さ れ ãĻ い る å ´ 合 ãĢ は 、 ã‚ĩ ポ ãƒŧ ト さ れ ãĒ い 。 そ ぎ å ´ 合 は 、 ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ ã‚ē 文 字 列 ぎ 前 ãĢ あ る ’ - ’ や ’ + ’ は 、 す ず ãĻ į„Ą čĻ– さ れ る )。

ク り ãƒŧ ト

äē’ æ› ãƒĸ ãƒŧ ド で は 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ åŧ• き 数 や ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ 中 ãĢ 、 ホ ワ イ ト ゚ ペ ãƒŧ ゚ や į‰š 掊 文 字 が あ る と 、 そ れ を 遊 切 ãĢ å‡Ļ ᐆ で き ãĒ い 。 そ ぎ た め 、 äē’ æ› ãƒĸ ãƒŧ ド ぎ å‡ē 力 を æ¸Ą さ れ た ã‚ˇ ェ ãƒĢ ゚ ク ãƒĒ プ ト は 、 そ ぎ å‡ē 力 を お ぎ よ う ãĢ 個 々 ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ ãĢ 分 剞 す る こ と が 期 åž… さ れ ãĻ い る ぎ か 、 わ か ら ãĒ い こ と ãĢ ãĒ る 。 こ ぎ 問 題 を 回 éŋ す る た め ãĢ 、 getopt ぎ こ ぎ 原 čŖ… で は 、 ク り ãƒŧ ト ãĢ よ る äŋ č­ˇ を 提 供 し ãĻ い る 。 čρ す る ãĢ 、 å‡ē 力 を į”Ÿ 成 す る と き 、 パ ナ ãƒĄ ãƒŧ ã‚ŋ を ã˛ と つ ã˛ と つ åŧ• ᔍ įŦĻ ã§ 回 ん で や る ぎ で あ る 。 こ ぎ å‡ē 力 を (た い ãĻ い は 、 ã‚ˇ ェ ãƒĢ ぎ eval ã‚ŗ マ ãƒŗ ド を äŊŋ ãŖ ãĻ ) も う 一 åēĻ ã‚ˇ ェ ãƒĢ ãĢ æ¸Ą し ãĻ や れ ば 、 åˆĨ 々 ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ ãĢ 遊 切 ãĢ 分 剞 さ れ る こ と ãĢ ãĒ る 。

æŦĄ ぎ å ´ 合 ãĢ は 、 åŧ• ᔍ įŦĻ ãĢ よ る äŋ č­ˇ が 行 わ れ ãĒ い 。 į’° åĸƒ 変 数 GETOPT_COMPATIBLE が 設 厚 さ れ ãĻ い る å ´ 合 、 「 書 åŧ 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ ぎ įŦŦ 1 ぎ 書 åŧ が äŊŋ わ れ ãĻ い る å ´ 合 、 ’ -u ’ ã‚Ē プ ã‚ˇ ョ ãƒŗ が 指 厚 さ れ ãĻ い る å ´ 合 。

ク り ãƒŧ ト æ–š åŧ は ã‚ˇ ェ ãƒĢ ご と ãĢ į•° ãĒ る 。 č‡Ē 分 が äŊŋ ᔍ し ãĻ い る ã‚ˇ ェ ãƒĢ ぎ æ–š åŧ を 選 ãļ ãĢ は 、 ’ -s ’ ã‚Ē プ ã‚ˇ ョ ãƒŗ を äŊŋ え ば よ い 。 įž 在 ã‚ĩ ポ ãƒŧ ト し ãĻ い る ã‚ˇ ェ ãƒĢ は 、 ’ sh ’, ’ bash ’, ’ csh ’, ’ tcsh ’ で あ る 。 原 ぎ と こ ろ 、 sh éĸ¨ ぎ ク り ãƒŧ ト æ–š åŧ と csh éĸ¨ ぎ ク り ãƒŧ ト æ–š åŧ と い う 、 2 つ ぎ įŗģ įĩą し か åŒē åˆĨ し ãĻ い ãĒ い 。 åˆĨ ぎ ã‚ˇ ェ ãƒĢ ゚ ク ãƒĒ プ ト 言 čĒž を äŊŋ ᔍ し ãĻ い る å ´ 合 で も 、 こ ぎ 2 つ ぎ įŗģ įĩą ぎ お ãĄ ら か が 多 分 äŊŋ え る だ ろ う 。

゚ キ ãƒŖ ニ ãƒŗ グ ãƒĸ ãƒŧ ド

ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ ã‚ē 文 字 列 (荺 æŗ¨ : 「 書 åŧ 」 ぎ optstring ) ぎ 先 é ­ ãĢ は 、 1 個 ぎ ’ - ’ ぞ た は ’ + ’ を äģ˜ ã‘ ãĻ 、 į‰š åˆĨ ãĒ ゚ キ ãƒŖ ニ ãƒŗ グ ãƒĸ ãƒŧ ド を 指 į¤ē す る こ と が で き る 。 「 書 åŧ 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ ぎ įŦŦ 1 ぎ å‘ŧ ãŗ å‡ē し åŊĸ åŧ が äŊŋ ᔍ さ れ ãĻ い る å ´ 合 ãĢ は 、 こ う し た プ ナ ゚ や マ イ ナ ゚ 記 åˇ は į„Ą čĻ– さ れ る が 、 そ ぎ と き で も 、 į’° åĸƒ 変 数 POSIXLY_CORRECT が 設 厚 さ れ ãĻ い る か お う か は 、 や は り čĒŋ ず ら れ る (荺 æŗ¨ : 原 際 ãĢ は 、 įŦŦ 1 ぎ 書 åŧ で optstring ぎ 先 é ­ ãĢ ’ - ’ を äģ˜ ã‘ る と 、 2, 3 į•Ē į›Ž ぎ 書 åŧ と æˇˇ 同 さ れ ãĻ 、 多 分 エ ナ ãƒŧ ãĢ ãĒ る )。

先 é ­ 文 字 が ’ + ’ ぎ å ´ 合 や 、 į’° åĸƒ 変 数 POSIXLY_CORRECT が 設 厚 さ れ ãĻ い る å ´ 合 は 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ で は ãĒ い パ ナ ãƒĄ ãƒŧ ã‚ŋ で (す ãĒ わ ãĄ 、 ’ -’ で 始 ぞ ãŖ ãĻ い ãĒ い パ ナ ãƒĄ ãƒŧ ã‚ŋ で )、 か つ ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ åŧ• き 数 で も ãĒ い も ぎ が 最 初 ãĢ čĻ‹ つ か ãŖ た 時 į‚š で 、 č§Ŗ 析 は ゚ ト ッ プ す る 。 掋 り ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ は す ず ãĻ 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ と čĻ‹ ãĒ さ れ る 。

先 é ­ 文 字 が ’ - ’ ぎ å ´ 合 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ は 、 そ れ が čĻ‹ つ か ãŖ た äŊ įŊŽ ãĢ å‡ē 力 さ れ る 。 そ れ ãĢ 寞 し ãĻ 、 通 常 ぎ 動 äŊœ で は 、 そ う し た パ ナ ãƒĄ ãƒŧ ã‚ŋ は 、 1 個 ぎ ’ -- ’ と い う パ ナ ãƒĄ ãƒŧ ã‚ŋ が į”Ÿ 成 さ れ た 垌 で 、 å‡ē 力 ぎ æœĢ å°ž ãĢ 全 部 ぞ と め ãĻ įŊŽ ã‹ れ る ぎ で あ る 。 ãĒ お 、 こ ぎ ãƒĸ ãƒŧ ド で も 、 ’ -- ’ と い う パ ナ ãƒĄ ãƒŧ ã‚ŋ は や は り į”Ÿ 成 さ れ る が 、 åŋ… ず 最 垌 ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ ãĢ ãĒ る 。

äē’ æ› 性

こ ぎ バ ãƒŧ ジ ョ ãƒŗ ぎ getopt (1) は 、 で き る だ け äģ– ãŽ バ ãƒŧ ジ ョ ãƒŗ と äē’ æ› 性 が あ る よ う ãĢ 書 か れ ãĻ い る 。 た い ãĻ い ぎ å ´ 合 、 äģ– ãŽ バ ãƒŧ ジ ョ ãƒŗ ぎ getopt を こ ぎ バ ãƒŧ ジ ョ ãƒŗ で įŊŽ ã 換 え る だ け で よ く 、 æ—ĸ 存 ぎ ã‚ˇ ェ ãƒĢ ゚ ク ãƒĒ プ ト ãĒ お ãĢ 手 を å…Ĩ れ る åŋ… čρ は ãĒ い 。 さ ら ãĢ 、 い く つ か ぎ 刊 į‚š も あ る 。

getopt ぎ 最 初 ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ ぎ 最 初 ぎ 文 字 が ’ - ’ で ãĒ い å ´ 合 、 getopt は äē’ æ› ãƒĸ ãƒŧ ド ãĢ ãĒ る 。 最 初 ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ は 、 ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ を ã˛ と つ ãĢ ぞ と め た 文 字 列 と čĻ‹ ãĒ さ れ 、 äģ– ãŽ す ず ãĻ ぎ åŧ• き 数 は 、 č§Ŗ 析 ぎ 寞 蹥 ãĢ ãĒ る 。 こ ぎ å ´ 合 で も 、 į’° åĸƒ 変 数 POSIXLY_CORRECT が 設 厚 さ れ ãĻ い ãĒ い か ぎ り 、 パ ナ ãƒĄ ãƒŧ ã‚ŋ ぎ ä¸Ļ ず æ›ŋ え は 行 う 。 (す ãĒ わ ãĄ 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ す ず ãĻ ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ は 、 最 垌 ãĢ å‡ē 力 さ れ る )。

į’° åĸƒ 変 数 GETOPT_COMPATIBLE は getopt を åŧˇ åˆļ įš„ ãĢ äē’ æ› ãƒĸ ãƒŧ ド ãĢ す る 。 こ ぎ į’° åĸƒ 変 数 と POSIXLY_CORRECT ぎ 严 æ–š を 設 厚 す る と 、 「 気 雪 し い 」 プ ロ グ ナ ム ぎ た め ãĢ 100% ぎ äē’ æ› 性 が åž— ら れ る 。 し か し 、 通 常 は お ãĄ ら も 設 厚 す る åŋ… čρ が ãĒ い 。

äē’ æ› ãƒĸ ãƒŧ ド で は 、 ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ ã‚ē 文 字 列 ぎ 先 é ­ ãĢ äģ˜ ã ’ - ’ や ’ + ’ は į„Ą čĻ– さ れ る 。

čŋ” り 値

getopt は 、 č§Ŗ 析 ãĢ 成 功 し た å ´ 合 は 、 エ ナ ãƒŧ ã‚ŗ ãƒŧ ド 0 を čŋ” す 。 getopt (3) が エ ナ ãƒŧ を čŋ” し た å ´ 合 は 1 を čŋ” す 。 č‡Ē 分 č‡Ē čēĢ ãĢ 寞 し ãĻ 与 え ら れ た パ ナ ãƒĄ ãƒŧ ã‚ŋ が ᐆ č§Ŗ で き ãĒ か ãŖ た å ´ 合 は 2 を čŋ” す 。 ãƒĄ ãƒĸ ãƒĒ が čļŗ ã‚Š ãĒ い (out-of-memory) と い ãŖ た 内 部 エ ナ ãƒŧ が čĩˇ き た å ´ 合 は 3 を čŋ” す 。 -T ã‚Ē プ ã‚ˇ ョ ãƒŗ を äģ˜ ã‘ ãĻ å‘ŧ ãŗ å‡ē さ れ た å ´ 合 は 4 を čŋ” す 。

ᔍ 例

getopt (1) ぎ 配 布 で は 、 (ba)sh と (t)csh ᔍ ぎ ゚ ク ãƒĒ プ ト ぎ čĻ‹ æœŦ を 提 供 し ãĻ い る 。 イ ãƒŗ ゚ ト ãƒŧ ãƒĢ å ´ 所 は /usr/share/doc/util-linux/getopt/ で あ る (荺 æŗ¨ : /usr/share/doc/util-linux/examples/ ãĒ お か も し れ ãĒ い )。

į’° åĸƒ 変 数

POSIXLY_CORRECT

こ ぎ į’° åĸƒ 変 数 は getopt (3) ãƒĢ ãƒŧ テ ã‚Ŗ ãƒŗ ãĢ よ ãŖ ãĻ čĒŋ ず ら れ る 。 こ れ が 設 厚 さ れ ãĻ い る å ´ 合 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ で も ã‚Ē プ ã‚ˇ ョ ãƒŗ ぎ åŧ• き 数 で も ãĒ い パ ナ ãƒĄ ãƒŧ ã‚ŋ が čĻ‹ つ か ãŖ た 時 į‚š で 、 č§Ŗ 析 は 停 æ­ĸ す る 。 そ れ äģĨ 降 ぎ す ず ãĻ ぎ パ ナ ãƒĄ ãƒŧ ã‚ŋ は 、 ’ - ’ で 始 ぞ ãŖ ãĻ い る か お う か ãĢ é–ĸ äŋ‚ ãĒ く 、 ã‚Ē プ ã‚ˇ ョ ãƒŗ と は į„Ą é–ĸ äŋ‚ ãĒ パ ナ ãƒĄ ãƒŧ ã‚ŋ と し ãĻ č§Ŗ 釈 さ れ る 。

GETOPT_COMPATIBLE

getopt ãĢ 寞 し ãĻ åŧˇ åˆļ įš„ ãĢ 「 書 åŧ 」 ã‚ģ ク ã‚ˇ ョ ãƒŗ ぎ įŦŦ 1 ぎ å‘ŧ ãŗ å‡ē し åŊĸ åŧ を äŊŋ わ せ る 。

バ グ

getopt (3) é–ĸ 数 は 、 åŧ• き 数 が äģģ æ„ ぎ ロ ãƒŗ グ ã‚Ē プ ã‚ˇ ョ ãƒŗ が įŠē ぎ äģģ æ„ åŧ• き 数 を æ¸Ą さ れ た å ´ 合 、 そ れ を č§Ŗ 析 で き る (だ が 、 ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ ãĢ 寞 し ãĻ は 、 そ れ が で き ãĒ い )。 一 æ–š 、 こ ぎ getopt (1) ã‚ŗ マ ãƒŗ ド は 、 įŠē ぎ äģģ æ„ åŧ• き 数 を 、 åŧ• き 数 が 存 在 し ãĒ い か ぎ よ う ãĢ å‡Ļ ᐆ し ãĻ い る 。

[ 荺 æŗ¨ ]

バ グ と は 言 ãŖ ãĻ も 、 不 å…ˇ 合 で は ãĒ く 、 こ ぎ getopt ã‚ŗ マ ãƒŗ ド が getopt (3) é–ĸ 数 と は 、 äģ• æ§˜ が 垎 åĻ™ ãĢ 違 う と い う こ と を 言 ãŖ ãĻ い る ら し い 。 す ãĒ わ ãĄ 、 getopt (3) ( getopt_long (3)) é–ĸ 数 は 、 åŧ• き 数 が äģģ æ„ ぎ ロ ãƒŗ グ ã‚Ē プ ã‚ˇ ョ ãƒŗ ãĢ åŧ• 数 が ãĒ い å ´ 合 と 、 įŠē ぎ åŧ• き 数 を æ¸Ą さ れ た å ´ 合 と を åŒē åˆĨ し ãĻ い る 。 そ れ ãĢ 寞 し ãĻ 、 こ ぎ getopt ã‚ŗ マ ãƒŗ ド ぎ æ–š は 、 ロ ãƒŗ グ ã‚Ē プ ã‚ˇ ョ ãƒŗ で あ れ 、 ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ で あ れ 、 åŧ• き 数 が äģģ æ„ ぎ ã‚Ē プ ã‚ˇ ョ ãƒŗ ãĢ åŧ• 数 が ãĒ い å ´ 合 と 、 įŠē ぎ åŧ• き 数 を æ¸Ą さ れ た å ´ 合 と を åŒē åˆĨ せ ず 、 お ãĄ ら も 同 じ よ う ãĢ å‡Ļ ᐆ し ãĻ い る 。

ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ を 全 く äŊŋ い た く ãĒ い å ´ 合 ぎ getopt ã‚ŗ マ ãƒŗ ド ぎ 構 文 は 、 あ ぞ り į›´ 感 įš„ で は ãĒ い (ã‚ˇ ョ ãƒŧ ト ã‚Ē プ ã‚ˇ ョ ãƒŗ ã‚ē 文 字 列 を 明 į¤ē įš„ ãĢ įŠē 文 字 列 ãĢ し ãĒ け れ ば ãĒ ら ãĒ い ぎ だ )。

[ 荺 æŗ¨ ]

す ãĒ わ ãĄ 、 getopt -o ’’ --longoptions ... ぎ よ う ãĢ äŊŋ ᔍ し ãĒ け れ ば ãĒ ら ãĒ い 。

äŊœ 者

Frodo Looijaard <frodo@frodo.looijaard.name>

é–ĸ 逪 項 į›Ž

bash (1), tcsh (1), getopt (3)

å…Ĩ 手 æ–š æŗ•

こ ぎ getopt ã‚ŗ マ ãƒŗ ド は 、 util-linux パ ッ ã‚ą ãƒŧ ジ ぎ 一 部 で あ り 、 Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/> か ら å…Ĩ 手 で き る 。