2016-04-03 21 views
1

Ist es möglich, interaktive Vorschläge basierend auf Benutzereingaben zu machen?bash script - generiert Vorschläge basierend auf Benutzereingaben

Beispiel:

$ my_script --check-hosts prod<TAB> 
    production1.company.com production-db1.company.com 
    production2.company.com 
    production3.company.com 

In verschiedenen Fällen sollte ich DNS-Einträge, grep Dateien usw.
Ich weiß über bash_completion aber ist es möglich, zu erzeugen, diese Liste on the fly abfragen?

+1

Während Sie 'COMPREPLY' einstellen, können Sie die ganze Liste von Domain-Namen mit einem anderen benutzerdefinierten Skript im laufenden Betrieb abrufen – ritesht93

Antwort

0

Sie benötigen würde, eine neue Datei erstellen hier:

/etc/bash_completion.d/myfunction 

aktualisieren alle Verweise innerhalb der ersten und letzten Zeile des Codeblocks unten an myFunction. Sie können die Flag-Variable auch mit beliebigen automatisch abgeschlossenen Begriffen aktualisieren, die Sie möchten. --help und --version sind momentan gesetzt.

_myfunction() 
{ 
    local cur prev flags 
    COMPREPLY=() 
    cur="${COMP_WORDS[COMP_CWORD]}" 
    prev="${COMP_WORDS[COMP_CWORD-1]}" 
    flags="--help --version" 

    if [[ ${cur} == -* ]] ; then 
     COMPREPLY=($(compgen -W "${flags}" -- ${cur})) 
     return 0 
    fi 
} 
complete -F _myfunction myfunction 

Sobald Sie diese Datei erstellt haben, laden Sie bash neu.

bash 

Dann sollte die automatische Vervollständigung funktionieren.