シェルでコマンドの引数にハイフン2個(--)は何?
とあるサービスの起動スクリプトで、
if expr -- "${HOGE__ARGS[*]}" : '.*setuid.*' >/dev/null
といったものを見て、これ何だっけ?となったのでメモ。
これはgetoptの引数解析の仕様。
getoptのmanによると、以下のようにある。
"--" は特殊な引き数で、スキャンのモードによらず、 オプションのスキャンを強制的に終了させる。
つまり、引数解析の終わりを示す。(これより先はオプションではない、と明示するもの)
ここでの「--」の役割は、 "${HOGE__ARGS[*]}" がハイフンから始まる場合に、exprコマンドの引数でない事を保証するためと思われる。
ただ、exprコマンドで - から始まる引数は、「--help, --version」ぐらいに思えるので、どれほど意味があるのかは謎のまま(´・ω・`)