2016-05-13 14 views
3

Ich habe die folgende Funktion in meinem .zshrc, die es mir theoretisch erlaubt, eine Commit-Nachricht ohne Anführungszeichen zu schreiben.zsh: unbekanntes Dateiattribut

cm(){ 
    git commit -m "[email protected]" 
} 

Wenn ich es laufen (cm foo bar), erhalte ich folgende Fehlermeldung:

zsh: unknown file attribute 

Bedeutet [email protected] die gleiche Sache in zsh, wie es in der Bash tut?

Antwort

1

Nach Artikel this, * und @ enthalten beide ein Array der Positionsparameter.

The parameters * , @ and argv are arrays containing all the positional parameters; thus $argv[n] , etc., is equivalent to simply $n .

Und ...

A subscript of the form [*] or [@] evaluates to all elements of an array; there is no difference between the two except when they appear within double quotes. "$foo[*]" evaluates to "$foo[1] $foo[2] ..." , whereas "$foo[@]" evaluates to "$foo[1]" "$foo[2]" ... .

+0

Das scheint mit $ an die Arbeit {*} statt $ *. Ich frage mich, warum zsh das anders umsetzen würde. – Marcel

+0

Sie meinen, dass Sie "$ @" in Ihrem Code durch "$ {@}" ersetzt haben? –

+0

Es tut mir leid, das war verwirrend. Ich habe '" $ @ "' durch "$ {*}" 'ersetzt. Ich habe das Falsche in meinen Kommentar eingefügt, weil ich damit angefangen habe. Ich habe gerade $ * auf $ @ umgestellt, als ich eine Fehlerbehebung durchgeführt habe. Wie ich es verstehe, ist $ @ wie ein Array und $ * ist eine durch Leerzeichen getrennte Zeichenkette. – Marcel