Shell script: lire une chaine de caractere da

Bjr à tous,
Je sis débutant en shell script.
En fait je veux créer un programme en korn shell qui va me permettre d'aller lire une chaine de caractère dans un fichier et me retourner sa valeur.
y a t il une commande qui pemret de faire ça?
mERCI D AVANCE
Configuration: Windows XP
Internet Explorer 7.0

5 réponses

  1. Modérateur
    grep "toto" /app/shell/test >/dev/null ; if [ "$?" = 0 ]; then ls ; fi ; done
    PS. Dans mon message précédent, j'avais oublié de mettre le fichier "test" dans 'grep "toto" /app/shell/test'
    0
    1. au risque d'être chiant, à quoi sert >/dev/null
      Merci pour ton aide
      0
  2. Modérateur
    Ça redirige ce qui est sensé être envoyé sur la sortie standard (dans notre cas stdout=l'écran), vers une sorte de poubelle virtuelle sans fond. En gros tout ce que tu ne veux pas voir apparaître sur ton écran (ou dans un fichier le cas échéant, tout dépend de la redirection), tu l'envoies vers "/dev/null".

    Sans cette directive, en sus du listage de ton répertoire, tu aurais auparavant l'affichage de la ligne contenant "toto".
    0
    1. j ai l'erreur suivante qui apparaît qd j execute mon script
      "syntax error at line 59 : `done' unexpected"
      Voila ce que je fais:

      grep "Server started in RUNNING mode" /app/bea/wlsa >/dev/null
      if [ "$?" = 0 ]
      then

      trace "Demarrage du serveur"
      executer_remote_script $APPLI_SRV $EXPLOIT sys_managesrv.ksh start
      retour=$?
      if [ $retour -eq 3 ]
      then
      exit 3;
      fi

      trace "Fin de Lancement de l'application "

      fi
      done

      En fair, je veux que mon script consulte le fichier wlsa, et qu'il n'execute ce qui vient après le then qu'une fois il y aura la chaine "Server started in RUNNING mode" écrite ds le fichier wlsa.

      Help!
      0
  3. Modérateur
    Affiche ton script en entier, sinon on patauge...

    Est-ce qu'il existe un "do" en amont de ton script ? (du fait de : "syntax error at line 59 : `done' unexpected" )
    0
    1. non j ai pas de do en amont
      0
    2. Modérateur
      Supprime le "done" alors ;-))
      0
    3. @jipicyça a l'air de marcher
      thanks a lot
      0
    4. Modérateur
      De rien ;-))
      0
    5. @jipicySlt,
      je sollicite encore ton savoir :)
      Cette fois je faire une boucle qui permet de chercher une chaine:

      grep "Server started in RUNNING mode" /app/wlsa.log >/dev/null

      while [ $? != 0 ]
      do
      grep "Server started in RUNNING mode" /app/wlsa.log >/dev/null
      sleep 10
      trace "toujours dans la boucle"
      done

      Normalement ça doit boucler tant que je n'ai pas ma chaine de caractère ds le fichier.
      Ce qui n'est pa le cas.
      Est ce que j'ai un prob de syntaxe?
      0
  4. bonjour,

    j'ai la ligne suivante :

    export HORCMINST="29"
    SVP, comment puis-je afficher le chiffre 29 seul.?
    awk ??

    Merci
    0
    1. Modérateur
      Salut,
       echo 'export HORCMINST="29"' | grep -o '[0-9]\+'
      ;-))
      0
    2. @jipicysalut
      merci pour ta reponse, ce ke tu ma di ca marche bien. mais jai deja trouver une autre solution, en fait, le chiffre entre guillemet change, ex export HORCMINST="1033". demain je tenvoi la solution paseke mnt chui chez moi (pas a mon bureau)

      salutation
      0
  5. Modérateur
    Salut,

    Normalement avec "grep" (man grep) ça doit le faire, mais il faut être plus précis sur ce que tu veux vraiment faire (donnes-nous un exemple concret).

    ;-))
    -1
    1. je vais être un peu plus précis.
      je veux créer un shell avec la condition suivante:
      Tant que
      je ne trouve pas la chîne de caractère "toto" dans le fichier "test"qui se trouve dans /app/shell
      ne rien faire
      0
    2. Modérateur
      Re-

      Ce que tu veux faire n'est pas très orthodoxe dans le sens où il vaudrait mieux programmer un truc dans le genre :

      Tant que "je trouve la chaîne "toto" dans "/app/shell"; faire bla bla bla...

      ou alors :

      Tant que "je ne trouve pas la chaîne "toto" dans "/app/shell"; faire bla bla bla...

      Mais bon voici quand même ce que tu veux (enfin presque) :
      grep "toto" /app/shell ; while [ "$?" != 0 ]; do echo "Je ne fais rien"; done
      ;-))
      0
    3. @jipicymerci pour ta réponse.
      En fait ce que je veux faire c'est:
      exécuter une commande (par ex ls) qu'une fois j'aurai trouvé la chaine de caractère "toto" ds /app...
      a ton avis...
      0