Kiedy używasz rozwijania nawiasów klamrowych w bash, coś takiego
echo {a,b,c}
staje się
echo a b c
Czy istnieje sposób na rozwinięcie go do 3 oddzielnych poleceń, po jednym dla każdego rozszerzenia?
Po to aby:
echo {a,b,c}
stanie się
echo a
echo b
echo c
file-{r,b,g}{m,n,o}{x,y.z}.foo
, lepiej użyć krótkiej formy niż wyliczyć wszystkie 27 wartości.for
prace dla tego, ale to jeszcze bardziej wpisując: Peval git branch -d \{ branch-a, branch-b }\;
W oparciu o wybraną odpowiedź Marka Manna mogłem dalej wyprowadzić ten przykład, który działa świetnie:
To, co pokazuje, to kiedy używasz wielu wystąpień rozwinięcia nawiasu w linii, oryginalny przykład Marka wydrukowałby każdą odmianę osobno. Zamiast tego chciałem użyć jego odpowiedzi, aby przenieść / zmienić nazwę wielu plików. Aby upewnić się, że wyjście dopasowane format, który
mv
normalnie oczekuje (mv oldfilename newfilename
), uciekłem Drugie wystąpienie interpretacji nawiasów, tak, że nie będzie oceniana, aż po początkowymeval
komenda była wykonywana.Ponieważ powyższe dane wyjściowe pojawiły się zgodnie z oczekiwaniami, byłem w stanie uruchomić następującą komendę:
Wielkie podziękowania dla Marka za jego oryginalną odpowiedź. Proszę głosować w górę na jego odpowiedź, jeśli podoba wam się to, na co pozwoliła mi jego odpowiedź :-)
źródło
źródło