IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

commande du -sh


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 12
    Par défaut commande du -sh
    Bonjour,

    Voila pour un script nagios j'aimerais récupérer la taille d'un répertoire mais lorsque je fait la commande du -sh | cut -c1-2 j'ai bien les 2 premiers chiffre, le problème c'est comment je fait si j'ai 3 chiffre ? Comment puis je le tester ?

    Merci d'avance pour l'aide

  2. #2
    Membre chevronné Avatar de cboudy
    Profil pro
    Ingénieur informatique industrielle
    Inscrit en
    Avril 2006
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique industrielle
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 407
    Par défaut
    tu peux utiliser un awk ou un cut -f pour récupérer le premier champ, puis demander à sed de virer la lettre de l'unité (si j'ai bien compris la question) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo  '123K     .' | awk '{print $1}' | sed 's/[a-zA-Z]//g'
    donne 123

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 12
    Par défaut
    merci bien cboudy ça marche !
    Maintenant j'ai une autre question, je veut faire un conversion en pourcentage de la taille de mon répertoire par rapport à une valeur (500 M), voila mon calcul :
    percent=$((($taille / 500) * 100))

    mais j'ai toujours 0 en retour, j'ai lu qu'il fallait rajouter un |bc pour prendre en compte les valeurs décimal mais je ne trouve pas de quel maniére, alors si quelqu'un à une idée !

    merci d'avance

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 12
    Par défaut
    c'est bon j'ai trouvé :
    percent=$(echo "scale=2;(($taille / 500) * 100)" | bc)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Salut,

    tu peux utiliser la variable scale pour définir le nombre de chiffres après la virgule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo "scale=3; ${size}/500*100" | bc
    20.600
    man page bc

    NUMBERS
    The most basic element in bc is the number. Numbers are arbitrary precision numbers. This precision is both in the integer part and
    the fractional part. All numbers are represented internally in decimal and all computation is done in decimal. (This version trun-
    cates results from divide and multiply operations.) There are two attributes of numbers, the length and the scale. The length is the
    total number of significant decimal digits in a number and the scale is the total number of decimal digits after the decimal point.
    For example:
    .000001 has a length of 6 and scale of 6.
    1935.000 has a length of 7 and a scale of 3.

    VARIABLES
    Numbers are stored in two types of variables, simple variables and arrays. Both simple variables and array variables are named. Names
    begin with a letter followed by any number of letters, digits and underscores. All letters must be lower case. (Full alpha-numeric
    names are an extension. In POSIX bc all names are a single lower case letter.) The type of variable is clear by the context because
    all array variable names will be followed by brackets ([]).

    There are four special variables, scale, ibase, obase, and last. scale defines how some operations use digits after the decimal point.
    The default value of scale is 0. ibase and obase define the conversion base for input and output numbers. The default for both input
    and output is base 10. last (an extension) is a variable that has the value of the last printed number. These will be discussed in
    further detail where appropriate. All of these variables may have values assigned to them as well as used in expressions.

  6. #6
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Bonjour,

    C'est le problème du calcul sur entiers. Il est possible d'y remédier en inversant les opérations:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo $((103 / 100 * 500)) -->  0
    echo $((103 * 500 / 100)) --> 20
    Le second résultat est correct: 20 au lieu de 20.6.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Interception des commandes in et out
    Par KDD dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 18/12/2002, 16h55
  2. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  3. [Kylix] Commandes linux ss kylix
    Par csnickos dans le forum EDI
    Réponses: 3
    Dernier message: 15/09/2002, 20h24
  4. Réponses: 3
    Dernier message: 02/09/2002, 18h49
  5. Réponses: 2
    Dernier message: 11/08/2002, 21h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo