Saya mendefinisikan daftar dalam bash seperti ini:
list="element1 element_2 my_element_3 element04"
dan saya ingin melakukan loop di mana saya mengulangi semua kombinasi pasangan yang mungkin. Di Perl, saya akan menggunakan while / foreach dengan perubahan pada daftar seperti ini:
while (my $element1 = shift (@list)) {
foreach my $element2 (@list) {
print "$element1 - $element2\n";
}
}
Saya tidak ingin elemen yang sama dalam pasangan dan tidak peduli dengan urutan pasangan, jadi jika daftar adalah "A B C", hasilnya seharusnya:
A - B
A - C
B - C
Bagaimana saya bisa melakukan hal yang sama di bash?
Cara lain untuk memikirkan masalah Anda adalah: jika Anda memiliki (i, j) indeks untuk setiap item dalam daftar Anda, Anda hanya akan tertarik pada set item di atas (atau di bawah) diagonal (yaitu, di mana saya & gt; j) .
Jika Anda menginginkan semua kombinasi, maka Anda hanya perlu menguji di mana i! = J.
Saya ingin melakukan hal serupa: menghasilkan semua kemungkinan pemesanan 4 item.
For
loop bersarang ke kedalaman 4 tidak akan sangat cantik, dan persyaratan elegan tidak muncul di pikiran, tetapi solusi ini memang:sumber
buang output ke out standar, pipa untuk mengurutkan -u
sumber