Forum Programmation.shell petit oublis

Posté par  .
Étiquettes : aucune
0
17
nov.
2005
Re...
J'ai oublié de demander au érudits : insérer des lignes vierges dans le script :
mon script commence a peu près comme ça :

#!bin/bash
# commentaire
echo -n "appuyer sur C!"
read C
echo -n "le floppy se monte"
etc etc

ce qui donne qd je le lance :

$ appuyer sur C!
$ le floppy se monte

donc je voudrais mettre une ligne entre les deux ou genre un delay ou un truc comme ça...Ou bien comme sous dos, les petits points défilants...........le tps que le floppy se monte...
si vous voyez ce que je veux dire :0(
merci bcp
Johan
  • # option -n

    Posté par  . Évalué à 1.

    au lieu d'utiliser :
    echo -n "Appuyez..."
    utilise plutôt :
    echo "Appuyez..."
    (sans l'option -n).

    En effet, l'option -n sert à indiquer qu'on ne veut pas de retour à la ligne après ce qu'on écrit.
    • [^] # Re: option -n

      Posté par  . Évalué à 1.

      merci, j'avais lu un peu à l'envers, sorry...
      Est ce que tu aurais une idée pour le laps de temps que je voudrais insérer pendant que le floppy se monte ? stp
      Merci
      johan
      • [^] # Re: option -n

        Posté par  (site web personnel) . Évalué à 2.

        il me semble que mount est synchrone: cela signifie que à un moment donné, pour monter ta disquette, tu vas faire un truc du genre:
        mount /mnt/floppy
        La commande ne sortira pas tant que la disquette ne sera pas montée, ou bien elle retournera une erreur au bout d'un temps défini (timeout). Je t'avoue que je ne sais pas si le coup des points c'est faisable (simplement) en shell...

        Donc pas besoin de delai, une fois sorti du mount, tu sais si la commande a marché ou pas en testant sa valeur de retour, ou en testant la variable $? qui contient toujours la valeur de retour de la dernière commande lancé.

        Je te conseille la lecture de ce guide bash:
        http://www.bsdbooks.net/shells/scripting/fr/
        ou si tu maitrisses l'anglais (version originale plus à jour)
        http://www.tldp.org/LDP/abs/html/index.html
        • [^] # Re: option -n

          Posté par  (site web personnel) . Évalué à 3.

          si mais c'est pas terrible
          mount /mnt/floppy &
          pid=$!

          while [ $(ps | grep " $pid "|grep -v "grep"|wc -l) -ne 0 ]; do
          echo -n"."
          done


          PS: J'ai pas testé mais on doit pas être loin du script
          • [^] # Re: option -n

            Posté par  . Évalué à 2.

            Pas besoin : ps renvoie 1 lorsqu'il n'a trouvé aucun processus. Donc, un petit :

            while $(ps $pid > /dev/null) ; do echo -n "." ; sleep 1 ; done

            ... suffit. Mais ça reste sale.
  • # sans garantie

    Posté par  . Évalué à 2.

    Je crois que ça peut le faire. C'est sans garantie ...


    #!/bin/bash

    mount /floppy &
    NB=`ps | grep $! | wc -l`
    while [ $NB -ge 2 ]; do
    echo -en .
    NB=`ps aux | grep $! | wc -l`
    done
    echo


    $! est le "PID de la commande (asynchrone) exécutée en
    arrière-plan le plus récemment" d'après man bash.
    • [^] # Re: sans garantie

      Posté par  . Évalué à 3.

      une autre idée sans les ps | grep | wc :


      mount /floppy&
      MOUNT_PID=$!

      while kill -0 $MOUNT_PID &>/dev/null
      do
        echo -n "."
        sleep 1
      done
      echo


      kill vérifie la présence du processus lancé en tache de fond, et renvoie ok tant qu'il existe.
      avec -0 aucun signal n'est envoyé au pid cible.
    • [^] # Re: sans garantie

      Posté par  . Évalué à 1.

      Merci didit, Skeespin et Goeb,
      Je vais m'arranger avec toutes ces infos...
      J'ai cru lire (mais comme je lis un peu à l'envers ces temps ci :O) que pour monter un floppy dans dans un script il fallait écrire : mount /dev/fd0
      Est ce que les deux cmd (mount/dev/fd0 ou monut/floppy) ont le même aboutissant ?

      quant à l'anglais, anyway, j'ai passé 17 en amérique du Nord ;O) sans fausse modestie bien sur...

      tks a lot

      Johan
      • [^] # Re: sans garantie

        Posté par  . Évalué à 1.

        merci tt le monde (comme ça je n'oublis personne :O)

        donc...
        while kill -0 $MOUNT_PID &>/dev/null
        do
        echo -n "."
        sleep 1
        done
        echo
        elle fonctionne, je n'ai qu'1 point, mais c un bon début. :O))
        Il me reste à définir pkoi la cmd mount ne fonctionne pas...
        j'ai essayé avec les deux cmd /floppy et dev/fd0 ?!?!?!
        Je persévere :O)
        Merci encore tt le monde, j'ai bien fait de m'inscrire sur ce forum...
        Johan
      • [^] # Re: sans garantie

        Posté par  (site web personnel) . Évalué à 3.

        mount /mnt/floppy ( ou /floppy) ou mount /dev/fd0 ont exactement la même signification SI /dev/fd0 est déclaré dans /etc/fstab avec un point de montage par défaut.

        mais si tu n'as rien dans ta fstab conernat la disquette, tu dois spécifier à mount tous les parametres:
        # mount -t msdos /dev/fd0 /floppy

        Tout homme qui dirige, qui fait quelque chose, a contre lui ceux qui voudraient faire la même chose, ceux qui font précisément le contraire, et surtout la grande armée des gens d'autant plus sévères qu'ils ne font rien du tout. -- Jules Claretie

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.