このコードは、文脈がなければ実に不可解です。そのままでは、2 つのリテラル文字列に一致します -
$ case "+(--import" in +\(--import|-i\)) echo match ;; esac
match
$ case "-i)" in +\(--import|-i\)) echo match ;; esac
match
拡張された glob pattern に似ています+(--import|-i)
が、この形式では、リテラル パターン (パイプをエスケープする必要があります) にも実際のパターン (括弧をエスケープ解除する必要があります) にも一致しません。私は「バグ」だと思いますが、bash の補完はクレイジーなメタプログラミングの地雷原であるため、スクリプト全体を見ずに言うことはできません。
bash(1)から
shopt ビルトインを使用して extglob シェル オプションを有効にすると、いくつかの拡張パターン マッチング演算子が認識されます。以下の説明では、pattern-list は | で区切られた 1 つ以上のパターンのリストです。複合パターンは、次のサブパターンの 1 つまたは複数を使用して形成できます。
[...]
+(pattern-list)
Matches one or more occurrences of the given patterns