Antworten:
Ist dies nur eine Frage, "weil ich es wissen will", oder gibt es einen echten Anwendungsfall dafür? Wir könnten ein bisschen Gymnastik machen, um es zu erledigen:
$ eval echo\ {a,b,c}\;
a
b
c
Aber ich würde jeden jagen, der diese Art von verschleierten Befehlen in unsere Systemskripte einfügt.
Warum nicht stattdessen Klarheit schaffen:
$ for X in {a,b,c}; do echo $X; done
Sie könnten sogar ein paar Zeilenumbrüche einfügen und ein wenig einrücken, damit Sie immer verstehen, was Sie versucht haben.
forfunktioniert dafür, aber es wird noch mehr
eval git branch -d \{ branch-a, branch-b }\;
Basierend auf Mark Manns ausgewählter Antwort konnte ich dieses Beispiel weiter ableiten, was großartig funktioniert:
$ eval echo\ category_{17,32,33}.properties\{,.bak\}\;
category_17.properties category_17.properties.bak
category_32.properties category_32.properties.bak
category_33.properties category_33.properties.bak
Wenn Sie mehrere Klammererweiterungen innerhalb einer Linie verwenden, hätte Marks ursprüngliches Beispiel jede Variation einzeln gedruckt. Stattdessen wollte ich seine Antwort verwenden, um mehrere Dateien zu verschieben / umzubenennen. Um sicherzustellen, dass die Ausgabe dem Format entspricht, das mvnormalerweise erwartet wird ( mv oldfilename newfilename), habe ich das zweite Auftreten der Klammererweiterung vermieden, sodass sie erst nacheval Ausführung des ersten Befehls ausgewertet wird .
Da die obige Ausgabe wie erwartet angezeigt wurde, konnte ich den folgenden Befehl ausführen:
$ eval mv\ category_{17,32,33}.properties\{,.bak\}\;
$ ls
category_17.properties.bak category_32.properties.bak category_33.properties.bak
Vielen Dank an Mark für seine ursprüngliche Antwort. Bitte stimmen Sie seine Antwort ab, wenn Ihnen gefällt, was seine Antwort mir erlaubt hat :-)
file-{r,b,g}{m,n,o}{x,y.z}.fooist es besser, die Kurzform zu verwenden, als alle 27 Werte aufzulisten.