Marotte ⛧ a écrit 8719 commentaires

  • [^] # Re: Débuggage

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

    on a un quota de quelques centaines de Mo la semaine, et un truc du genre 1 giga l'an

    Tu es en prison ? :) Dans quel pays ?

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 2. Dernière modification le 31 octobre 2014 à 11:33.

    En même temps, j'ai pas l'énoncé

    Tu surf sous elinks et tu n'arrives pas à afficher la nimage dans ton framebuffer ? Tu réponds par mail ? Tu utilises un terminal Braille ?

    L'énoncé

  • [^] # Re: Débuggage

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

    Merci pour ton explication.

    Il se trouve que les autres tests renvoient le même résultat avec une chaîne vide ou un paramètre absent.

    C'est tordu, je me demande la raison derrière :/

    En fait, tous tes tests devraient contenir des guillemets

    Oui…

    Si ça se trouve le résultat et peut être aléatoire sans guillemets ? Ou bien le test -n se comporte volontairement de manière différente ?

  • [^] # Re: Débuggage

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

    Non, tu ne dois pas utiliser de boucle for, c'est dans l'énoncé.

    Il faut utiliser le paramètre spécial $@ qui contient l'ensemble des arguments (et pas $* qui fait sensiblement la même chose mais pas tout à fait)

    C'est traité au chapitre « Paramètre spéciaux » du manuel de ton shell.

    Chez moi, /bin/sh lance /bin/dash donc man dash

    Tu fais ce truc sous quel OS ?

  • [^] # Re: Débuggage

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

    Tu dois faire un script en shell qui s'utilise ainsi :

    $ ./script arg1 arg2 arg3

    et qui a la même sortie que la commande ps -C arg1,arg2,arg3

    en utilisant sed :)

    On peut t'aider à voir ce qui ne va pas dans ton code, comme on l'a fait pour l'exercice 2. mais peu de gens vont te donner une réponse toute faite. Ça ne serait pas te rendre service…

    man sed ! Non je déconne ça va pas trop t'aider. Cherche plutôt un cours, avec des exemples, sur le web pour te familiariser avec sed.

  • [^] # Re: Débuggage

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

    J'ai utilisé $* parce que je suis idiot.

  • [^] # Re: Débuggage

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

    C'est d'ailleurs assez tordu de le faire avec sed… J'y arrive, mais le script ne supporte pas des espaces supplémentaires entre les arguments (alors que les deux premiers scripts si), ça finit en arg1,arg2,,,,arg3 ce que ps -C trouve toute aussi impropre comme liste…

    Bon courage ! ^^

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 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 ?

    Ni l'un ni l'autre, à part pour le test du nombre d'arguments…

  • [^] # Re: Débuggage

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

    Parce que geany n'est pas lancé ? :)

    Ton script fonctionne.

  • [^] # Re: Débuggage

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

    Bien vu.

    Si je test $VAR et "$VAR" ou ! -z $VAR et ! -z "$VAR" j'ai le même résultat, par contre -n $VAR et -n "$VAR" ne donne pas le même résultat.

    C'est en flagrante contradiction avec le manuel :

    -n CHAÎNE
    la longueur de CHAÎNE est non nulle
    CHAÎNE équivalent à -n CHAÎNE

    J'aime mon shell…

    C'est normal ce comportement ?

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 3. Dernière modification le 30 octobre 2014 à 17:36.

    je m'en sors pas avec les conditions

    Pour y voir plus clair, plutôt que de sauter des lignes dans ton code, « indente » le. Ce n'est pas parce que ce n'est pas obligatoire, comme en python par exemple, que ce n'est pas nécessaire. On indente toujours le code. Si j'étais prof ce serait direct deux points en moins un code sans indentation :)

    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é à 2. Dernière modification le 30 octobre 2014 à 17:29.

    then VAR="$i"
    else VAR="$VAR,$i"
    

    ça c'est bon, et pas besoin d'enlever une virgule à la fin :)

    $VAR -eq 0
    

    ça non.

    Si tu veux tester si $VAR est vide il ne faut pas utiliser -eq, je te laisse chercher toi même (man test) !

    EDIT : Quoique -eq "" fonctionne peut-être, mais il y a mieux.

  • [^] # Re: Débuggage

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

    De toute façon te casses pas :

    ça marche pour bash, je ne sais pas pour sh

    je viens de tester ça ne fonctionne pas. Mais on peut faire comme ça :

    $ u=toto
    $ u+=titi
    sh: 12: u+=titi: not found  <-- marche pas en sh
    $ u=${u}titi                <-- ça oui
    $ echo $u
    tototiti
    
  • [^] # Re: Débuggage

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

    Poste le code entier. Mais par contre, c'est très important :

    1) Saute une ligne
    2) Mets trois "backquote" (c'est le caractère sur AltGr+7) suivi de "sh" (sans espace)
    3) Colle ton code à partir de la ligne d'après
    4) Saute une ligne
    5) Mets trois "backquote" et saute une ligne

    Sinon ce ne sera pas lisible. C'est expliqué sur le wiki : https://linuxfr.org/wiki/aide-edition#code

  • [^] # Re: Débuggage

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

    sinon tu peux aussi regarder avec shift pour chopper le premier et faire le reste avec le for

    J'ai trouvé celui qui lisait pas les énoncés jusqu'au bout ! :) C'est la partie 4. Tu brûles les étapes.

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 2. Dernière modification le 30 octobre 2014 à 17:00.

    Tu as fait une erreur dans la condition, $VAR est une chaîne vide, ce n'est pas un entier :

    stef@medusa:~$ if [ "" -eq 0 ]; then echo "true"; else echo "false"; fi;
    bash: [:  : nombre entier attendu comme expression
    false
    

    Tu peux retourner lire la page man de test ;) Mais sinon j'ai déjà donné des exemples dans mes autres commentaires…

    Mais tu t'y prends aussi mal dans la boucle :

    Si VAR n'est PAS VIDE:
    VAR=?
    sinon:
    VAR=?

    Je te donne un indice pour trouver les ? : la virgule n'est pas au bon endroit et dans l'un des cas tu n'as pas besoin d'utiliser les deux variables…

    C'est plus propre que la méthode donnée plus haut qui consiste à mettre des virgules au mauvais endroit pour ensuite en enlever une ! :p

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 3. Dernière modification le 30 octobre 2014 à 16:47.

    `commande` et $(commande) ne sont pas équivalents, le premier exécute la commande dans un sous-shell, la deuxième dans le shell courant.

    C'est peut-être pour ça que tu as un comportement étrange avec $*

    En espérant ne pas dire de conneries.

  • [^] # Re: Débuggage

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

    ps -C ${i:1}

    Au moins c'est cool, là on enlève bien une virgule :)

  • [^] # Re: Débuggage

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

    Bin si sauf qu'il y a théoriquement 3 conditions qui sont équivalentes pour tester si $VAR n'est pas vide :

    ! -z $VAR
    $VAR
    -n $VAR

    Je ne comprends pas pourquoi la dernière ne fonctionne pas.

    Et comme cela a été dit, il ne faut pas enlever la virgule mais la mettre seulement si c'est nécessaire (ie : si $VAR n'est pas vide)

  • [^] # Re: Débuggage

    Posté par  . En réponse au message Exercice shell script. Évalué à 2. Dernière modification le 30 octobre 2014 à 16:20.

    man test

    En fait la commande test s'appelle aussi "[" (si tu regardes dans /usr/bin tu verras un programme nommé simplement « [ »)

    stef@medusa:~$ ls -li /usr/bin/[ /usr/bin/test
    524048 -rwxr-xr-x 1 root root 39464 avril 13  2014 /usr/bin/[
    523982 -rwxr-xr-x 1 root root 35368 avril 13  2014 /usr/bin/test
    

    Tiens d'ailleurs c'est marrant je m'attendais à un lien physique… mais passons

    Il n'y a pas une méthode plus simple ?

    Ce n'est pas très compliqué :

    if [ <condition> ]
    blabla
    else
    blabla
    fi
    

    qui peut aussi s'écrire :

    if test <condition>
    blabla
    else
    blabla
    fi
    

    ou encore :

    if [ <condition>
    blabla
    else
    blabla
    fi
    

    Le crochet fermant est juste là pour la décoration… Par contre n'oublie pas de laisser un espace à l'intérieur des crochets ;)

  • [^] # Re: Débuggage

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

    Je suis du même avis que toi. Par curiosité j'ai essayé de faire son exercice et je suis tombé sur un comportement qui me laisse dubitatif :

    J'initialise d'abord ma variable VAR comme une chaîne vide VAR="" (pour être sûr, en fait au début je ne l'avais pas fait mais j'ai cru que le comportement décrit ci-dessous était lié à ça. Je viens également d'essayer VAR= c'est la même chose…)

    à chaque tour de boucle si VAR contient déjà quelque chose

    Pour le test j'ai le choix entre ! -z $VAR c'est celui qui me vient en premier, -n $VAR celui que je trouve dans le man de la commande test à la recherche d'un truc plus propre, $VAR qui est, toujours d'après le manuel, équivalent au second.

    Je ne comprends pas pourquoi :

    ! -z $VAR -> OK
    $VAR -> OK
    -n $VAR -> NOK (j'ai 'arg1,arg2,argN,' en sortie…)

  • [^] # Re: Un .deb pour les prochaines versions ?

    Posté par  . En réponse au journal Pourquoi vous ne devriez pas packager vous-même votre logiciel pour Debian ?. Évalué à 6.

    Le portable est pas supposé s'éteindre tout seul en cas de chauffe trop importante, avant destruction des circuits internes ?

  • [^] # Re: Un .deb pour les prochaines versions ?

    Posté par  . En réponse au journal Pourquoi vous ne devriez pas packager vous-même votre logiciel pour Debian ?. Évalué à 2.

    des mises à jour sur ma debian qui ont rendu mon ordi bon pour la casse…

    Haha ! Vraiment ? Je suis curieux…

  • [^] # Re: ok

    Posté par  . En réponse au message questions sur differentes commandes. Évalué à 2. Dernière modification le 28 octobre 2014 à 21:21.

    la commande echo xxxx crée un fichier texte nommé ls avec pour contenu "cat yyy"

    C'te flemme du copier/coller :) Ça ne participe pas à la clarté de ton propos…

  • [^] # Re: N'exécute pas ces commandes

    Posté par  . En réponse au message questions sur differentes commandes. Évalué à 3.

    cat /challenge/binary/binary1/.passwd. Pourquoi on fait ça ? Je ne le sais pas, ça ne semble pas permettre une élévation de droits en soi.

    Le programme binary1 est un cracker de mot de passe et écrit le mot de passe deviné dans le fichier .passwd, ainsi quelle n'est pas la stupéfaction de l'utilisateur qui voit s'afficher son mot de passe top secret, son intimité, lors d'un inoffensif ls :)

    En tous cas merci pour tes explications détaillées.