Ouais, je vois le soucis:
Quand il arrive à cette ligne,
pkg vaut
"bin32-wine" par exemple, mais à cause de l'étoile,
ls renvoie aussi
"bin32-winetricks"; ce qui fait qu'au lieu de comparer
"1.1.29-1" et
"1.1.26-1", il compare
"1.1.29-1",
"1.1.26-1" et
"20090705-1".
Comme c'est
"20090705-1" qui 'gagne', le
ls plus bas rempli
"condamned" avec tout ce qui ne contient pas
"20090705-1" dans
"bin32-winetricks-20090705-1-x86_64.pkg.tar.gz",
"bin32-wine-1.1.29-1-x86_64.pkg.tar.gz" et
"bin32-wine-1.1.26-1-x86_64.pkg.tar.gz", c'est à dire
"bin32-wine-1.1.29-1-x86_64.pkg.tar.gz" et
"bin32-wine-1.1.26-1-x86_64.pkg.tar.gz". Du coup, les 2
"bin32-wine" sont virés.
Ha, tiens, c'est pas très clair, comme explication
Pour contourner le problème, il suffirait de réappliquer la grosse regexp du début, en remplacant le champ 1 par $pkg;
en gros, dans le script, remplacer
par
Code : Tout sélectionner
for version in $(ls "$pkg"* | grep "$pkg-\(.*\)-\([0-9]\+\)\(-\(i686\|x86_64\)\)\{0,1\}\.pkg\.tar\..*$" | sed "s/$SED_PKG/\\2-\\3/")
et
par
Code : Tout sélectionner
condemned=$(ls "$pkg"* | grep "$pkg-\(.*\)-\([0-9]\+\)\(-\(i686\|x86_64\)\)\{0,1\}\.pkg\.tar\..*$" | grep -Fv "$lastver")
À confirmer / infirmer / optimiser ...

Si les cons savaient voler, il ferait nuit tout le temps ...