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

Linux Discussion :

wc -c dans un if ?


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Par défaut wc -c dans un if ?
    Bonjour,

    je tatone un peu pour un test dans un shell.

    J'ai besoin de savoir combien de caratéres fait l'argument que je récupére en paramétre.
    J'utilise wc -c mais je sais pas trop comment l'utiliser.

    J'ai essayé :
    if [ `wc -c $1` > 8 ]
    then echo Erreur de lancement: le nom de la base "$1" fait plus de 8 carateres ; exit 1;
    fi
    et plein d'autre facon pour if [ `wc -c $1` > 8 ] (avec ou sans ", avec $, ...) mais j'y arrive pas

    Idem pour le >8 ca doit pas etre ca car ca fait "que" rediriger vers un fichier 8 l'info...

    une petite idée :

    Merci

  2. #2
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 889
    Par défaut
    Attention pour les comparaisons ! > et < n'ont pas lieu d'être !

    Il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if [ `wc -c $1` gt 8 ]
    then echo Erreur de lancement: le nom de la base "$1" fait plus de 8 carateres ; exit 1;
    fi
    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  3. #3
    Membre Expert Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Par défaut
    Merci pour le gt, par contre, par rapport à wc, j'ai une erreur:

    wc: cannot open 123456787777
    ./creerBase.sh[17]: test: argument expected
    ou 12345687777 est le nom de l'argument passé (histoire d'avoir plus de 8 caractéres)...

    Problémes dans mon test ?

  4. #4
    Membre chevronné
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Par défaut
    normal puisque tu n'as pas de fichier de ce nom

    tu peux faire alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ `echo $1 | wc -c` gt 8 ]
    pour tester la longueur de chaine de largument $1

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    bon comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (( $(echo "zzzz" | wc -c ) > 5 ))
    en "posix" le > < <= .... on tout a fait lieu d'être ! ce sont pour un test numerique :
    (( condition ))
    et un test alpha :
    [[ condition ]]

  6. #6
    Membre Expert Avatar de nebule
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    1 507
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 507
    Par défaut
    Voila voila, j'ai réussi au final

    J'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    len=`echo $1|wc -c`
    len=`expr $len-1`
     
    if [ $len -gt 8 ]
    then echo Erreur de lancement: le nom de la base "$1" fait plus de 8 carateres ; exit 1;
    fi
    Bien vu pour le "echo".

    Merci

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

Discussions similaires

  1. DBLookupComboBox dans DBGrid
    Par KThrax dans le forum Bases de données
    Réponses: 7
    Dernier message: 24/08/2004, 15h18
  2. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39
  3. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Documentation DirectX dans C++Builder 3
    Par srvremi dans le forum DirectX
    Réponses: 1
    Dernier message: 26/04/2002, 09h59

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