Pascal BOYER a �crit, jeudi 23 d�cembre 2004, � 21:20 :
> Selon Jacques L'helgoualc'h <[EMAIL PROTECTED]>:
[...]
> > Bash :
> >
> > precedent="$(ls -1tr /chemin/des/svgd/ | tail -1)"
> > n="${precedent//*[.0]}"
> > n_plus_un="$(printf '%04d' $[ n + 1 ])"
[...]
> Si t'as trois minutes, tu peux m'expliquer le principe de //*[.0] et de %04d
Au d�part, j'essaie de r�cup�rer l'extension du num�ro avec ${precedent##*.}
qui supprime tout le d�but jusqu'au dernier point :
$ precedent=test.txt.0042
$ n=${precedent##*.}
$ echo $n
0042
$ echo $[ n + 1 ]
35
Pas glop, 0042 est en octal ; donc je passe � //*[.0], qui bouffe
avidement tout jusqu'au dernier point ou z�ro... ah, merde, s'il y a un
z�ro � la fin �a ne va plus !
$ precedent=test.txt.0040
$ n="${precedent##*.}"
$ echo $n
0040
Faire trois fois n=${n#0} est bourrin, mais on peut pr�ciser la base :
$ echo $[ 10#$n + 1 ]
41
Donc finalement (d�sol� pour le bug)
precedent="$(ls -1tr /chemin/des/svgd/ | tail -1)"
n="${precedent##*.}"
n_plus_un="$(printf '%04d' $[ 10#$n + 1 ])"
Le printf '%04d' �crit le nombre n + 1 sur exactement quatre chiffres
d�cimaux, compl�t�s � gauche par des z�ros.
> Bonnes f�tes
Merci, et bonnes f�tes � tous
--
Jacques L'helgoualc'h