Wenn Sie es sich leisten können, so viele Kommas wie smooth
möglich einzugeben, können Sie die durch Kommas getrennte Klammererweiterung der Shell nutzen.
TL; DR
Die gesamte Befehlszeile für Ihren Beispielfall lautet:
generate | eval 'smooth |'{,,,,} plot
Hinweis:
- Fügen Sie Kommas hinzu oder entfernen Sie sie, wenn Sie mehr oder weniger Wiederholungen von möchten
smooth |
- Es gibt kein
|
vorher, plot
da dies in der letzten smooth |
von der Brace Expansion produzierten Saite enthalten ist
- Sie können auch Argumente für angeben
smooth
, sofern Sie sie korrekt in den angegebenen festen Teil einfügen können, der der offenen Klammer vorausgeht. Denken Sie auf jeden Fall daran, dass Sie sie für alle Wiederholungen des Befehls bereitstellen würden
Wie es funktioniert
Mit der durch Kommas getrennten geschweiften Klammer können Sie dynamisch Zeichenfolgen erstellen, die jeweils aus einem festgelegten Teil und den festgelegten variablen Teilen bestehen. Es werden so viele Zeichenfolgen a{b,c,d}
erzeugt , wie variable Teile angegeben sind, wie es produziert wird ab ac ad
.
Der kleine Trick dabei ist, dass die Klammererweiterung nur Kopien des festen Teils erzeugt , wenn Sie lieber eine Liste leerer variabler Teile erstellen, dh nur mit Kommas in den Klammern. Zum Beispiel:
smooth{,,,,}
wird herstellen:
smooth smooth smooth smooth smooth
Beachten Sie, dass 4 Kommas 5 smooth
Zeichenfolgen ergeben. So funktioniert diese Klammer-Erweiterung: Sie erzeugt Strings mit so vielen Kommas plus einem.
Natürlich benötigen Sie in Ihrem Fall auch jeweils eine |
Trennung. smooth
Fügen Sie sie also einfach in den festen Teil ein, und achten Sie darauf, dass Sie sie richtig zitieren, damit die Shell sie nicht sofort interpretiert. Das ist:
'smooth|'{,,,,}
wird herstellen:
'smooth|' 'smooth|' 'smooth|' 'smooth|' 'smooth|'
Achten Sie darauf, dass Sie das feststehende Teil immer unmittelbar neben der offenen Stütze platzieren, dh es dürfen keine Abstände zwischen der '
und der {
.
(Beachten Sie auch, dass Sie zur Bildung des festen Teils auch doppelte Anführungszeichen anstelle von einfachen Anführungszeichen verwenden können, wenn Sie Shell-Variablen im festen Teil erweitern müssen. Achten Sie nur auf das zusätzliche Escape-Zeichen, das erforderlich ist, wenn einige Shell-Sonderzeichen auftreten in doppelten Anführungszeichen).
An dieser Stelle benötigen Sie eine eval
auf diesen String angewendeten Befehl ausführen, damit die Shell ihn schließlich als den Pipeline-Befehl interpretiert, den sie haben soll.
Zusammenfassend wäre die gesamte Befehlszeile für Ihren Beispielfall also:
generate | eval 'smooth |'{,,,,} plot