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 :

chaine de caractere et arguments d'une commande


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Par défaut chaine de caractere et arguments d'une commande
    salut tout le monde!
    je suis encore débutant en programmation UNIX,excusez mes questions débiles!
    ère question:
    comment tester si la chaine de caractère A se termine par une autre chaine de caractère B
    j'ai tenté de le faire ainsi:
    ceci ne donne pas d'erreurs mais ça donne pas le résultat que je veux
    2ème question:
    si je veux tester une commande avec 2 arguments,comment faire?
    par exemple la commande test sur un repertoire,je veux tester qu'il est autorisé en lecture et qu'il est bien un répertoire alors j'ai utilisé ca:
    ou "a"contient le nom du répertoire,mais ça marche pas
    merci d'avance les amis!

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour vamos,

    1- La substitution de * n'est pas opérée entre guillemets, ou entre crochets droits.
    Pour savoir si une chaîne contenue dans une variable commence, se termine, ou contient une autre variable,
    il faut utiliser les doubles crochets droits ([[), et comparer les variables avec égal tilde.
    Cela permet d'évaluer des expressions rationnelles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [[ "$A" =~ ^"$B" ]] && echo "$A commence par $B" || echo "$A ne commence pas par $B"       
    [[ "$A" =~ "$B" ]] && echo "$A contient $B" || echo "$A ne contient pas $B"       
    [[ "$A" =~ "$B"$ ]] && echo "$A se finit par $B" || echo "$A ne se finit pas par $B"
    cf. man bash - GRAMMAIRE DE L'INTERPRÉTEUR - Commandes composées - [[ expression ]] - 2ème paragraphe


    2- les options de la commande interne/intégrée test (pour laquelle [ est équivalent) ne sont pas "cumulables".
    l'option -a vérifie que les deux (ou plus) conditions sont remplies
    l'option -o vérifie que l'une des conditions est vraie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test -d $a -a -r $a && echo "$a est un répertoire et est accessible en lecture" || echo "$a n'est pas un répertoire ou n'est pas accessible en lecture" 
    [ -d $a ] && [ -r $a ] && echo "$a est un répertoire et est accessible en lecture" || echo "$a n'est pas un répertoire ou n'est pas accessible en lecture"
    cf. man bash - CONDITIONS
    help test
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Par défaut
    merci N_BAH pour tes reponses,ca marche tres bien!
    en restant dans les chaines de caracteres, j'ai un probleme avec expr ,on me dit :
    expr:argument non numerique
    quand j'ecris cette commande:
    ou n est un nombre entier ,est ce qu'il considere "1" comme une chaine de caracteres ?comment puis-je corriger ce probleme?
    merci pour tout

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    hmm,si n est vraiment un entier, il n'y a pas de problème.

    Quel shell utilises-tu ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    hmm,si n est vraiment un entier, il n'y a pas de problème.

    Quel shell utilises-tu ?
    salut!
    j'utilise le bourne shell sh
    en fait,la commande entiere est exactement ca:
    est ce que le probleme est ailleurs?
    merci mon ami

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Citation Envoyé par vamos
    est ce que le probleme est ailleurs?
    sans doute.

    que retourne :de toute façon, fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    unset n
    n=`expr $n + 1`
    echo $n
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Réponses: 8
    Dernier message: 02/12/2009, 09h56
  2. envoi d argument dans une commande d un CheckButton
    Par ours_en_pluche dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 14/10/2009, 10h30
  3. Réponses: 7
    Dernier message: 06/08/2008, 00h37
  4. Réponses: 1
    Dernier message: 08/09/2007, 17h12
  5. Verifier si une chaine de caractere est situe dans une chaine de caractere
    Par gregounnet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/07/2007, 15h31

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