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 :

[BASH] Condition sur valeur numérique


Sujet :

Shell et commandes GNU

Vue hybride

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut [BASH] Condition sur valeur numérique
    Bonjour,

    J'aimerais faire une condition sur la valeur de la taille d'un fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #! /bin/bash
     
    FileSize='stat -c "%s" <file.ext>'
     
    if [ $FileSize -gt 100000 ] 
    then echo "ok"
    else echo "non"
    fi
    FileSize est une chaine de caractère.. comment la passer en valeur numérique pour servir dans la condition?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Citation Envoyé par Newenda Voir le message
    FileSize est une chaîne de caractères..
    C'est vague...
    Quand tu l'exécutes, que reçoit exactement FileSize ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #! /bin/bash
     
    FileSize=$(stat -c "%s" <file.ext>)
     
    if [ "${FileSize}" -gt 100000 ] 
    then echo "ok"
    else echo "non"
    fi

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut
    Merci, cela semble marcher.
    Cependant je me demandais pourquoi en définissant FileSize de cette manière:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ FileSize=$(stat -c "%s" <fichier.ext>)
    il me renvoyait un "commande introuvable" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ $FileSize
    13121743872: commande introuvable
    ?

    merci encore

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 652
    Par défaut
    les accolades , quand il n'y a rien d'accolé, sont inutiles.
    ainsi que les guillemets autour de nombres, parce qu'ils sont "insécables".

    comment sait-on que c'est un nombre ?
    parce qu'on utilise un opérateur de comparaison arithmétique !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut, (ça mange pas de pain)

    Citation Envoyé par N_BaH Voir le message
    les accolades , quand il n'y a rien d'accolé, sont inutiles.
    ainsi que les guillemets autour de nombres, parce qu'ils sont "insécables".
    T'es tout le temps en train de rouspéter après tous les zigues qui ne respectent pas les fondamentaux en shell, donc, même si c'est inutile, autant prendre de bonnes habitudes, non ?

    Bonne journée.

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Citation Envoyé par Newenda Voir le message
    pourquoi en définissant FileSize de cette manière, il me renvoyait un "commande introuvable" ?
    As-tu réellement un logiciel, un script, un alias, ou un lien qui s'appelle 13121743872 ? Non ? Ben voilà. Tu as la réponse à ta question. On n'exécute pas 13121743872. La substitution de commande $( ) a rempli la variable FileSize avec le résultat de la commande. Si tu voulais l'afficher, il faudrait faire :

  8. #8
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ $(stat --format "test %s -gt 100000" fichier2.txt) && echo ok || echo non
    non
    $ $(stat --format "test %s -gt 100" fichier2.txt) && echo ok || echo non
    ok

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

Discussions similaires

  1. [XL-2003] problème sur valeur numérique
    Par Chicard dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/08/2011, 10h35
  2. Requete sur valeurs numériques répétées
    Par BMATH dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 28/02/2011, 09h10
  3. Condition sur valeurs d'une gridview en edit mode
    Par badi3a82 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 29/11/2010, 16h59
  4. [XL-2003] Test à effectuer sur valeurs numériques (débutant VBA..)
    Par Clipper24 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/07/2010, 12h25
  5. [XSLT][ACCESS]condition sur valeur
    Par kor dans le forum XSL/XSLT/XPATH
    Réponses: 23
    Dernier message: 10/01/2005, 14h14

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