Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/07/2008, à 14:39

vinvin22

[Résolu]fonction shell avec expr

bonjour,

est ce que quelqu'un pourrait me traduire cette fonction svp...?

cleanflog() { SIZE=`expr "\`wc -c "$FLOG" 2>/dev/null\`" : "\(.*\) .*"`
              [ "$SIZE" -gt 10240 ] && mv -f $FLOG $FOLD
              return 0

il s'agit d'une fonction qui apparemment me renomme un fichier en un autre si la taille de celui ci atteint les 10240 o, mais je ne comprends pas comment elle fonctionne , a quoi correspondent les \(.*\).*" et le \ avan le wc

si quelqu'un pouvait m'éclairer ou m'indiquer ou je peux m'éclairer...
merci smile

Dernière modification par vinvin22 (Le 02/07/2008, à 21:44)

Hors ligne

#2 Le 02/07/2008, à 15:49

Totor

Re : [Résolu]fonction shell avec expr

les \ permettent d'échaper les `,( et ) de l'instructions expr déjà encapsulés par des `.

le (.*) .* (attention, il y a un espace après la parenthèse fermante) va de couple avec expr sous la forme :

STRING : REGEXP
              anchored pattern match of REGEXP in STRING

en effet wc -c renvoie le nombre d'octets du fichier ainsi que le nom du fichier sous la forme taille nom_fichier
(.*) permet de cibler la zone taille et de concerver uniquement cette information renvoyée par wc

le tout aurait pu être écrit comme ceci si tu préfères :

cleanflog() {
SIZE=$(wc -c "$FLOG" 2>/dev/null|awk '{print $1}')
[ "$SIZE" -gt 10240 ] && mv -f $FLOG $FOLD
return 0
}

il est aussi possible d'utiliser grep (avec l'option -o) ou sed ou cut ... pour ne récupérer que la taille.


-- Lucid Lynx --

Hors ligne

#3 Le 02/07/2008, à 16:02

Alain.g

Re : [Résolu]fonction shell avec expr

Bonjour

Pour directement ne pas avoir le nom du fichier, on peut simplement faire : wc -c < "$FLOG"


Xubuntu Karmic !

Hors ligne

#4 Le 02/07/2008, à 17:34

vinvin22

Re : [Résolu]fonction shell avec expr

ok ca marche , j'ai donc mis:

cleanflog()
{SIZE=`wc -c < "$FLOG" 2>dev/null`
[ "$SIZE" -gt 10240 ] && mv -f $FLOG $FOLD
return 0
}

merci

Hors ligne

#5 Le 02/07/2008, à 19:19

Totor

Re : [Résolu]fonction shell avec expr

Alain.g a écrit :

Bonjour

Pour directement ne pas avoir le nom du fichier, on peut simplement faire : wc -c < "$FLOG"

'suis trop nul, j'y pense jamais  roll


-- Lucid Lynx --

Hors ligne

#6 Le 02/07/2008, à 21:44

vinvin22

Re : [Résolu]fonction shell avec expr

mais nan t'es fort !:cool: j'ai compris a quoi servaient les \ et les (.*) .* grace à toi
merci encore à vous

Hors ligne