Réponses:
S'agit-il simplement d'une question «parce que je veux savoir» ou existe-t-il un vrai cas d'utilisation? Nous pourrions faire de la gymnastique pour le faire:
$ eval echo\ {a,b,c}\;
a
b
c
Mais je traquerais toute personne qui introduirait ce genre de commandes obscures dans nos scripts système.
Pourquoi ne pas opter pour la clarté:
$ for X in {a,b,c}; do echo $X; done
Vous pourriez même vous lancer dans le porc entier et ajouter quelques nouvelles lignes et les indenter un peu afin que vous puissiez toujours comprendre ce que vous essayez de faire.
for
œuvres pour cela, mais il est encore plus besoin de taper: P
eval git branch -d \{ branch-a, branch-b }\;
Sur la base de la réponse choisie par Mark Mann , j'ai pu dériver davantage cet exemple, qui fonctionne très 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
Ce que cela montre, c'est que lorsque vous utilisez plusieurs occurrences d'expansion d'accolade au sein d'une ligne, l'exemple original de Mark aurait imprimé chaque variation individuellement. Au lieu de cela, je voulais utiliser sa réponse pour déplacer / renommer plusieurs fichiers. Pour m'assurer que la sortie correspondait au format qui mv
attend normalement ( mv oldfilename newfilename
), j'ai échappé à la deuxième occurrence de l'accolade, afin qu'elle ne soit évaluée qu'après l' eval
exécution de la commande initiale .
Comme la sortie ci-dessus est apparue comme prévu, j'ai ensuite pu exécuter la commande suivante:
$ eval mv\ category_{17,32,33}.properties\{,.bak\}\;
$ ls
category_17.properties.bak category_32.properties.bak category_33.properties.bak
Un grand merci à Mark pour sa réponse originale. Veuillez voter pour sa réponse si vous aimez ce que sa réponse m'a permis de faire :-)
file-{r,b,g}{m,n,o}{x,y.z}.foo
il vaut mieux utiliser le formulaire court que d'énumérer les 27 valeurs.