J'ai pas de debian sous la main, mais c'est le {..} qui passe pas avec les arguments en variable. Ainsi, for i in {"$a".."$b"} devient for i in "{24..36}", ce qui ne fait qu'une seule boucle, et ne renvoie rien du coup.
Du coup, je m'excuse pour le seq, car soit tu utilises un $(seq "$a" "$b"), ou $(eval echo "{$a..$b}"). Bash doit évaluer 2 fois la demande.
Bref, voici la version finale pour le coup (et désolé…) :
#!/bin/bash# recupere la liste des paquets à desinstaller à partir des parametres.# VERSION sera 3.x.yVERSION="1ドル"# DEBUT et FIN seront les variantes (le z dans 3.x.y-z de la version du paquet)DEBUT="2ドル"FIN="3ドル"# on fait une boucle sur la sequence comprise entre $DEBUT et $FIN avec l'outil seq# pour chaque valeur de la boucle, on fait cherche les paquets correspondants avec dpkg -l | grep...# on filtre cette liste pour ne recuperer que la 2e colonne de la sortie de dpkg avec awkLISTE=$(for i in $(seq "$DEBUT""$FIN"); do dpkg -l | grep "$VERSION-$i" | awk '{print 2ドル}'; done)# on demande à aptitude de purger tous les paquets que l'on a listés juste avant.echo"$LISTE"
[^] # Re: À propos de ta syntaxe
Posté par Jiehong (site web personnel) . En réponse au message comment je vide proprement mon /boot des vieux noyaux installés par ma distrib. Évalué à 2.
J'ai pas de debian sous la main, mais c'est le {..} qui passe pas avec les arguments en variable. Ainsi,
for i in {"$a".."$b"}devientfor i in "{24..36}", ce qui ne fait qu'une seule boucle, et ne renvoie rien du coup.Du coup, je m'excuse pour le
seq, car soit tu utilises un$(seq "$a" "$b"), ou$(eval echo "{$a..$b}"). Bash doit évaluer 2 fois la demande.Bref, voici la version finale pour le coup (et désolé…) :
Ça devrait marcher, si tu pouvais confirmer.