bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

compgen -W [wordlist] will do command subtitution and parameter expansio


From: ladyrick
Subject: compgen -W [wordlist] will do command subtitution and parameter expansion in wordlist
Date: Thu, 3 Mar 2022 20:32:24 +0800

Configuration Information [Automatically generated, do not change]:
Machine: x86_64
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -g -O2 -fdebug-prefix-map=/build/bash-a6qmCk/bash-5.0=. 
-fstack-protector-strong -Wformat -Werror=format-security -Wall 
-Wno-parentheses -Wno-format-security
uname output: Linux n16-118-182 5.4.0-100-generic #113-Ubuntu SMP Thu Feb 3 
18:43:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Machine Type: x86_64-pc-linux-gnu


Bash Version: 5.0
Patch Level: 17
Release Status: release


Description:
        I was develop a bash-completion function which can auto-complete
        history command. But when I use
        $ compgen -W "$(fc -l -10)" -- "${COMP_WORDS[1]}"
        It gave me a weird result.


        After many debug, I found that compgen will do command subtitution
        and parameter expansion in word list.
        It executed every $(...) in bash history so it gave a weird result.


        For example, this command
        $ compgen -W '`ls`'
        will display current dir's content.


        $ compgen -W '$HOME'
        will display the HOME dir instead of literal '$HOME'


        $ compgen -W 'HOME' -- 'H'
        will get HOME but
        $ compgen -W '$HOME' -- '$'
        will get nothing.


Repeat-By:
        compgen -W "$(fc -l -10)" -- "${COMP_WORDS[1]}"
        compgen -W '`ls`'
        compgen -W '$HOME'
        compgen -W '$HOME' -- '$'

reply via email to

[Prev in Thread] Current Thread [Next in Thread]