2017-08-24 1 views
1

Ich habe ein Skript, das wie Argumente (mehrteilige Argumente) Datei nimmt, bin ich die möglichen Werte zu holen und sie in einem Array setzen raw genannt und dannZsh Abschluss Groß- und Kleinschreibung _multi_parts Funktion

_multi_parts/"(${raw[@]})" 

mit automatisch zu vervollständigen . Das Problem ist, dass dies Groß-und Kleinschreibung ist, wie kann ich es so machen, dass ich es mycommand get fo eingeben und drücken Sie Tab es wird mycommand get Foo/ automatisch vervollständigen, wenn Foo eines der Dinge in roh ist.

Der vollständige Abschluss ist hier als Referenz:

_mycommand() { 
    local curcontext="$curcontext" state line 

    _arguments "1: :->command" "*: :->label" 

    case $state in 
    command) 
    _arguments "1: :(add get ls rm)" 
    ;; 
    *) 
    case $words[2] in 
     add|get|ls|rm) 
     if [ -f ~/.pts ]; then 
      IFS=$'\n' read -d '' -r raw <<< "$(mycommand ls)" 
      _multi_parts/"(${raw[@]})" 
     fi 
     ;; 
     *) 
     _files 
     ;; 
    esac 
    esac 
} 

_mycommand "[email protected]" 

mycommand ls Ausgänge Pfad wie Namen wie die folgenden:

Foo/Bar/x 
Foo/Bar/y 
Derp/z 
Placeholder/z 

Antwort

0

Okay, ich es herausgefunden:

ändern Linien

IFS=$'\n' read -d '' -r raw <<< "$(mycommand ls)" 
_multi_parts/"(${raw[@]})" 

Zu

IFS=$'\n' raw=($(mycommand ls)) 
_multi_parts -M "m:{[:lower:][:upper:]}={[:upper:][:lower:]}"/raw 
Verwandte Themen