Risposte:
È solo una domanda "perché voglio sapere" o esiste un vero caso d'uso? Potremmo fare un po 'di ginnastica per farlo:
$ eval echo\ {a,b,c}\;
a
b
c
Ma darei la caccia a chiunque inserisse questo tipo di comandi offuscati nei nostri script di sistema.
Perché non andare per chiarezza invece:
$ for X in {a,b,c}; do echo $X; done
Potresti anche andare a braccetto e inserire un paio di righe e rientrare un po 'in modo da poter sempre capire cosa stavi cercando di fare.
for
lavori per questo, ma è ancora più digitando: P
eval git branch -d \{ branch-a, branch-b }\;
Sulla base della risposta selezionata di Mark Mann , sono stato in grado di derivare ulteriormente questo esempio, che funziona alla grande:
$ 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
Quello che sta mostrando, è quando stai usando più ricorrenze di espansione del controvento all'interno di una linea, l'esempio originale di Mark avrebbe stampato ogni variazione singolarmente. Invece, volevo usare la sua risposta per spostare / rinominare più file. Per garantire che l'output corrispondesse al formato mv
normalmente previsto ( mv oldfilename newfilename
), sono riuscito a evitare la seconda occorrenza dell'espansione del controvento, in modo che non fosse valutato fino a dopo l' eval
esecuzione del comando iniziale .
Dato che l'output di cui sopra è apparso come previsto, sono stato quindi in grado di eseguire il comando seguente:
$ eval mv\ category_{17,32,33}.properties\{,.bak\}\;
$ ls
category_17.properties.bak category_32.properties.bak category_33.properties.bak
Mille grazie a Mark per la sua risposta originale. Per favore vota la sua risposta se ti piace ciò che la sua risposta mi ha permesso di fare :-)
file-{r,b,g}{m,n,o}{x,y.z}.foo
, è meglio usare la forma abbreviata piuttosto che elencare tutti i 27 valori.