Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -g -O2 -flto=auto -ffat-lto-objects -flto=auto
-ffat-lto-objects -fstack-protector-strong -Wformat
-Werror=format-security -Wall
uname output: Linux EliteBook 5.15.0-43-generic #46-Ubuntu SMP Tue Jul
12 10:30:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Machine Type: x86_64-pc-linux-gnu
Bash Version: 5.1
Patch Level: 16
Release Status: release

##############################################################

when command completion function start running there are three
variables automatically setting

bash$ hello foo ba[tab]
$1 (command):   hello
$2 (current):        ba
$3 (previous):      foo

bash$ echo -n "$COMP_WORDBREAKS" | od -a
0000000  sp  ht  nl   "   '   @   >   <   =   ;   |   &   (   :

bash$ hello --opt foo:[tab]        # ":" is a member of $COMP_WORDBREAKS
$1 (command):   hello
$2 (current):        (empty)         # default behavior
$3 (previous):      foo

bash$ sudo hello --opt foo:[tab]         # using sudo command
$1 (command):   hello
$2 (current):        :          <----- not empty
$3 (previous):      foo

In cases where the $2 variable's value is a member of the
$COMP_WORDBREAKS variable
then the $2 value is empty by default and has to use the
${COMP_WORDS[COMP_CWORD]} variable for that value.
I think this is good for making the completion function simpler.
but if I use the sudo command in front of the hello command then the
$2 value is not empty.
this ends up can not use $2 variable and force to use
${COMP_WORDS[COMP_CWORD]} variable

Reply via email to