Respuestas:
¿Es solo una pregunta de "porque quiero saber", o hay un caso de uso real para ello? Podríamos hacer algunos ejercicios de gimnasia para hacerlo:
$ eval echo\ {a,b,c}\;
a
b
c
Pero cazaría a cualquiera que pusiera este tipo de comandos ofuscadores en los scripts de nuestro sistema.
¿Por qué no buscar claridad?
$ for X in {a,b,c}; do echo $X; done
Incluso podría ir por completo y poner un par de líneas nuevas y sangrar un poco para que siempre pueda entender lo que estaba tratando de hacer.
for
obras de este, pero es todavía más a escribir: P
eval git branch -d \{ branch-a, branch-b }\;
Basado en la respuesta seleccionada de Mark Mann , pude derivar aún más este ejemplo, que funciona muy bien:
$ 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
Lo que se muestra es que, cuando está utilizando múltiples ocurrencias de expansión de llaves dentro de una línea, el ejemplo original de Mark habría impreso cada variación individualmente. En cambio, quería usar su respuesta para mover / renombrar múltiples archivos. Para garantizar que la salida coincidiera con el formato que mv
normalmente se espera ( mv oldfilename newfilename
), escapé de la segunda aparición de expansión de llaves, para que no se evaluara hasta después de que seeval
hubiera ejecutado el comando inicial .
Como el resultado anterior apareció como se esperaba, pude ejecutar el siguiente comando:
$ eval mv\ category_{17,32,33}.properties\{,.bak\}\;
$ ls
category_17.properties.bak category_32.properties.bak category_33.properties.bak
Muchas gracias a Mark por su respuesta original. Por favor, vote su respuesta si le gusta lo que su respuesta me permitió hacer :-)
file-{r,b,g}{m,n,o}{x,y.z}.foo
entonces es mejor usar la forma corta que enumerar los 27 valores.