Um eine Vorstellung davon zu bekommen, was los ist, laufen Sie
% alias striplines='print -lr awk " /^$/ {print \"\n\"; } /./ {printf( \" %s \",$0);}"'
% striplines
awk
/^$/ {print "\n"; } /./ {printf( " %s ",zsh);}
Da die $
Zeichen in doppelten Anführungszeichen stehen (wenn sie nach dem Erweitern des Alias erweitert werden), werden sie von der Shell interpretiert. Um das Angebot in Anführungszeichen zu setzen, ist es einfacher, die gesamte Aliasdefinition in einfache Anführungszeichen zu setzen. In den einfachen Anführungszeichen wird erweitert, wenn der Alias verwendet wird. Jetzt, da das Argument von awk
in doppelte Anführungszeichen gesetzt ist, ist klar, dass Sie vorher Backslashes benötigen \"$
.
alias striplines='print -lr awk " /^\$/ {print \"\n\"; } /./ {printf( \" %s \",\$0);}"'
Eine nützliche Redewendung, um eine Zeichenfolge in '\''
einfachen Anführungszeichen zu setzen, ist, dass es so ziemlich eine Möglichkeit ist, ein wörtliches einfaches Anführungszeichen in eine Zeichenfolge in einfachen Anführungszeichen zu setzen. Technisch gesehen gibt es eine Gegenüberstellung einer Zeichenfolge in einfachen Anführungszeichen, einer Zeichenfolge mit umgekehrten Schrägstrichen '
und einer anderen Zeichenfolge in einfachen Anführungszeichen. Die nebeneinander angeordnete leere Zeichenfolge ''
am Ende kann entfernt werden.
alias striplines='print -lr awk '\'' /^$/ {print "\n"; } /./ {printf( " %s ",$0);}'\'
Nach dieser langen Erklärung eine Empfehlung: Wenn es für einen Alias zu kompliziert ist, verwenden Sie eine Funktion .