I’m having trouble understanding what the following code does in a bash completion script:
case "$last" in
+\(--import|-i\))
_filedir '+(txt|html)';;
When is that case ever met? I thought the second line above would be something like
--import|-i)
which does make sense to me. I grepped my bash_completion.d directory for '+\\(' but that one was the only one that came up so I guess it’s not that common.
This code is indeed puzzling without context. As it is, it matches two literal strings –
It looks similar to the extended glob pattern
+(--import|-i), but in this form it’s neither a match for the literal pattern (would need to escape the pipe) nor the actual pattern (would need to unescape the parentheses). I’d guess “bug”, but bash completion is a minefield of crazy metaprogramming, so it’s impossible to say without seeing the entire script.From bash(1)