Pikachu_2014 wrote:Tu peux utiliser bc, si on assimile tes numéros de version à des décimaux (pas de sous-versions si on se fie à ta liste) ; par exemple :
a=2.4
b=2.6
[ $(echo "$a < $b" | bc) -eq 1 ] && echo "a est plus petit que b"
Pour des numéros de version plus « détaillés » (par exemple, 2.4.12 vs 2.6.29), il va falloir te définir ta propre fonction de comparaison, en découpant la chaîne en numéro de version majeure, mineure et sous-version, et en comparant succesivement chacune des parties...).
justement en parlant de version mineure
je vais faire le truc
#!/bin/sh
list=$(curl -l ftp://ftp.kernel.org/pub/linux/kernel/ | grep '^v' | tr -s 'v' ' ')
version=0
url=''
for i in $list ; do
if [ $(echo "$i > $version" | bc) -eq 1 ] ; then
version=$i
fi
done
url=ftp://ftp.kernel.org/pub/linux/kernel/v$version/
list=$(curl -l $url | grep '^linux' | grep '.tar.bz2$' | sed 's/linux-/ /g' | sed 's/.tar.bz2/ /g')
for i in $list ; do
echo $i
done
donc comme tu peux le voir je vais lister les versions mineurs donc je vais chercher puisque à ce que tu m'as dis je peux pas réutiliser le bout de code que tu m'a donné
en tout cas merci de ton aide
PS : je suis sous mac (pas d'autre chose donc je suis sous les outils BSD)
2ème partie :
j'ai fais ce script (bon pas encore parfait, loin de là)
#!/bin/sh
# variable declaration
list=$(curl -l ftp://ftp.kernel.org/pub/linux/kernel/ | grep '^v' | tr -s 'v' ' ')
major_version=0
url=''
# listing major version and taking the highest
for i in $list ; do
if [ $(echo "$i > $major_version" | bc) -eq 1 ] ; then
major_version=$i
fi
done
# parsing url
url=ftp://ftp.kernel.org/pub/linux/kernel/v$major_version/
list=$(curl -l $url | grep '^linux' | grep '.tar.bz2$' | sed 's/linux-/ /g' | sed 's/.tar.bz2/ /g' | sed 's/'$major_version'./ /g')
minor_version=0
for i in $list ; do
if [ $(echo "$i > $minor_version" | bc) -eq 1 ] ; then
minor_version=$i
fi
done
mais voila comme tu me l'as dit ta version n'est pas faite pour les versions mineures
en effet je crois que le 2.6.9 et quand même plus récent que le 2.6.29.2
enfait je n'ai vraiement pas d'idées pour les versions mineures
enfin si j'en aurais bien une qui consiterais à faire X boucles
X étant le nombre de caratères après 2.6. (dans le cas de la
v2.6 du noyau)
la première en comparant (trouvant le plus grand) résultat du premier chiffre
par exemple en comparant 2 et 9 dans 2.6.
29 et 2.6.
9
et ensuite les enventuelles chiiffres quis sont ensuite
donc ce qui fait autant de boucle que de nombre X
donx 4 boucles
pour 2.6.32.41 (je dis n'importe quoi)
mais il reste à eviter les point (
.)