Jawaban:
Apakah ini hanya pertanyaan "karena saya ingin tahu", atau apakah ada kasus penggunaan nyata untuk itu? Kita bisa menjalani beberapa senam untuk menyelesaikannya:
$ eval echo\ {a,b,c}\;
a
b
c
Tetapi saya akan memburu siapa pun yang memasukkan perintah-perintah yang membingungkan ini ke dalam skrip sistem kami.
Mengapa tidak mencari kejelasan saja:
$ for X in {a,b,c}; do echo $X; done
Anda bahkan bisa menjadi babi utuh dan memasukkan beberapa baris baru dan sedikit membukanya sehingga Anda akan selalu bisa memahami apa yang Anda coba lakukan.
for
bekerja untuk ini, tapi masih lebih mengetik: P
eval git branch -d \{ branch-a, branch-b }\;
Berdasarkan jawaban yang dipilih Mark Mann , saya dapat menurunkan lebih lanjut contoh ini, yang sangat bagus:
$ 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
Apa yang ditampilkan, adalah ketika Anda menggunakan beberapa kejadian ekspansi brace dalam satu garis, contoh asli Mark akan mencetak setiap variasi secara individual. Sebagai gantinya, saya ingin menggunakan jawabannya untuk memindahkan / mengganti nama banyak file. Untuk memastikan bahwa output cocok dengan format yang mv
biasanya diharapkan ( mv oldfilename newfilename
), saya lolos dari ekspansi brace yang kedua, sehingga tidak akan dievaluasi sampai setelaheval
perintah awal dijalankan.
Ketika output di atas muncul seperti yang diharapkan, saya kemudian dapat menjalankan perintah berikut:
$ eval mv\ category_{17,32,33}.properties\{,.bak\}\;
$ ls
category_17.properties.bak category_32.properties.bak category_33.properties.bak
Terima kasih banyak untuk Mark atas jawaban aslinya. Harap beri suara pada jawabannya jika Anda suka jawabannya memungkinkan saya untuk melakukan :-)
file-{r,b,g}{m,n,o}{x,y.z}.foo
maka lebih baik menggunakan formulir pendek daripada menghitung semua 27 nilai.