Ubis a écrit 20 commentaires

  • [^] # Re: Bonne nuit !

    Posté par  . En réponse au message Exercice shell script . Évalué à 1.

    J'abandonne, je suis obligé d'aller à l'exam

  • [^] # Re: Bonne nuit !

    Posté par  . En réponse au message Exercice shell script . Évalué à 1.

    Finalement :

    #!/bin/sh
    
    if [ $# -ge 1 ]
    then $1
    else echo "usage: <cmd> <cmd>"
    exit 1
    fi
    if [ $? -ne 0 ]
    then echo "argument non valide"
    exit 1
    else
    $2
    fi
    exit 0

    ça fonctionne mais j'aurais quand même voulu savoir comment enlever la sortie d'erreur lorsque l'on entre une commande qui n'existe pas

    Je sais qu'il faut rediriger vers >&2 dev/null mais c'est quoi que je dois rediriger ?

    Exemple :

    ./ouu.sh date me

    mardi 4 novembre 2014, 21:54:24 (UTC+0100)
    ./ouu.sh: line 15: me : commande introuvable <- je veux enlever cette ligne

  • [^] # Re: Bonne nuit !

    Posté par  . En réponse au message Exercice shell script . Évalué à 1.

    J'ai réussi pour la correction du do :

    #!/bin/sh
    
    if [ $# -ge 1 ]
     then for i
       do $i
       done
    fi
    if [ $? -ne 0 ]
     then echo "argument non valide"
     exit 1
    else
     $i
     shift 1
    fi
    exit 0

    Par contre quand j’exécute le script :

    ./ouu.sh ps date

    J'obtiens deux fois la date à la fin alors que je ne la veux qu'une seule fois ?

     PID TTY          TIME CMD
     8635 pts/31   00:00:00 bash
    10462 pts/31   00:00:00 bash
    10463 pts/31   00:00:00 cat
    11978 pts/31   00:00:00 bash
    11979 pts/31   00:00:00 ps
    mardi 4 novembre 2014, 21:27:19 (UTC+0100)
    mardi 4 novembre 2014, 21:27:19 (UTC+0100)
  • [^] # Re: Bonne nuit !

    Posté par  . En réponse au message Exercice shell script . Évalué à 1.

    En fait j'ai réussi tout les autres exercices, c'est à celui la que je ne sais pas comment faire

    Sinon cette partie du code est-elle correcte ?

    do 
    $i
    done
  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    C'est bon, merci beaucoup !

    #!/bin/sh
    
    
    if [ $# -ge 1 ]
    then
    
      VAR="$@"
      echo $VAR | ps -C `sed -e 's/ /,/g'`
    
    
    else
    
    echo "pas d'argument"
    exit 1
    
    fi
    exit 0
  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    J'ai déjà essayé mais sed doit prendre un fichier en entrée non ?

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    Finalement j'ai trouvé comment faire avec les substitutions :

    #!/bin/sh
    
    
    if [ $# -ge 1 ]
    then
    
      VAR="$@"
      echo $VAR > tmp
      ps -C `sed -e 's/ /,/g' tmp`
    
    else
    
    echo "pas d'argument"
    exit 1
    
    fi
    exit 0

    Mais par contre n'y a-t-il pas un moyen de faire sans le fichier tmp ? Je sens que mon prof ne va pas aimer

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    Nous n'avons pas encore vu les substitutions en cours :

    #!/bin/sh
    
    
    if [ $# -ge 1 ]
    then
    
      VAR="$@"
      echo $VAR > tmp
      sed -e 's/ /,/g' tmp
    
    ps -C $VAR
    else
    
    echo "pas d'argument"
    exit 1
    
    fi
    exit 0

    Je ne vois pas comment récupérer la sortie de sed, j'ai essayer avec des pipes mais j'obtiens que des erreurs. J'ai fait une gaffe dans le script ci dessus ?

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    J'utilise Ubuntu

    #!/bin/sh
    
    
    if [ $# -ge 1 ]
    then
    
      VAR="$@"
      echo $VAR > tmp
      sed -e 's/" "/,/g' tmp
    
    ps -C $VAR
    else
    
    echo "pas d'argument"
    exit 1
    
    fi
    exit 0

    C'est comme ça pour l'utilisation de sed ? Les espaces ne sont pas remplacés quand je fait ça

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    J'ai essayé quelque chose, dites moi si je suis dans la bonne voie :

    if [ $# -ge 1 ]
     then
       for i
       do VAR="$i $VAR"
       done
     echo $VAR | sed "s/" "/,/g"
    
    else
    echo "pas d'argument"
    exit 1
    
    fi
    exit 0
  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    Comment je dois m'y prendre alors ? Je comprend pas trop la consigne

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    Je crois que c'est bon pour la 2.

    J'aurai juste une dernière question pour la 3. qui me dit de reprendre le script 2.

    Je dois remplacer les espaces par des virgules or il y a déjà des virgules non ? Ou bien c'est le script 1 que je dois modifier ?

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 2.

    Je crois que c'est ça

    if [ $# -ge 1 ]
    then
    
    for i
    
    do
    
    if [ -z ${VAR} ]
    then VAR="$i"
    else VAR="$VAR,$i"
    fi
    
    done
    echo $VAR
    ps -C $VAR
    
    else
    
    echo "pas d'argument"
    exit 1
    fi
    exit 0

    Mais par contre quand j'essaye : ./cmd_v2.sh bash geany
    Je n'ai que bash qui s'affiche

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    Rhaa j'ai le cerveau qui brule, je m'en sors pas avec les conditions :

    if [ $# -ge 1 ]
    then
    
    for i
    
    do
    
    if [ $VAR -eq 0 ]
    then VAR="$i"
    else VAR="$VAR,$i"
    fi
    
    done
    
    ps -C $VAR
    
    else
    
    echo "pas d'argument"
    exit 1
    fi
    exit 0
  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    ./cmd_v2.sh bash geany

    REPONSE :
    ./cmd_v2.sh: 14: VAR+=,bash: not found
    ./cmd_v2.sh: 14: VAR+=,geany: not found
    ps -C
    ./cmd_v2.sh: 14: Bad substitution

    J'ai pas réussi avec ce que tu m'as dit

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    Si j'ai bien compris :

    !/bin/sh

    if [ $# -ge 1 ]
    then
    for i
    do
    if [ $VAR -eq 0 ]
    then VAR="$VAR$i"
    else VAR="$VAR$i,"
    fi
    done
    ps -C $VAR
    else
    echo "pas d'argument"
    exit 1
    fi

    exit 0

    Mais j'ai toujours le même problème, la virgule à la fin, j'ai fait une erreur dans la condition ?

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 0.

    Donc finalement tu ne sais pas comment enlever la virgule à la fin ?

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    En fait je dois reprendre le script d'avant pour continuer l'exercice

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    Donc je dois essayer avec des conditions (if ..) Ça complique pas la chose ? Il n'y a pas une méthode plus simple ?

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 1.

    J'ai déjà essayer avec echo pour comprendre le problème :

    ps -C bash,geany,

    C'est la dernière virgule qui gène et je sais pas comment l'enlever