Addition (+)

Bonjour,

je bloque sur l'une des notion basique d'unix c 'est les operateurs arithmetiques

voici un bout du code:

hexapost_seq=$(sed -n '1 s/.*=\(.*\)/\1/p' $mediapost)
hexapost_seq_maj=`expr $hexapost_seq + 1`
`sed "/HEXAPOST_SEQ/ s/:digit:/${hexapost_seq_maj}/" $mediapost>fich.tmp && mv -f fich.tmp $mediapost`

dans mon fichier hexapost_seq=12

quand j'execute pour la premiere fois j'obtiens
hexapost_seq=132

et quand j'execute pour la deuxième fois j'obtiens:
hexapost_seq=13332

et j'arrive pas à voir ou est l'erreur

merci d'avance pour votre aide

8 réponses

  1. ça marche

    merci de me sauver la vie à quaque fois :)
    0
    1. Modérateur
      Alors essaie avec cette syntaxe alors :
      s/[0-9][0-9]*/$var/
      ;-))
      0
      1. salut
        non, on m'affiche un message d'erreur : sed : Function HEXAPOST_SEQ/ s/[0-9]\+/14/ cannot be parsed
        0
        1. Modérateur
          Et sans la redirection dans un fichier, est-ce que l'affichage à l'écran donne le résultat espéré ?
          0
          1. bonjour

            up puisque je bloque toujours

            merci
            0
            1. Oui normalement ça doit marcher peut etre que j'ai touché à quelque chose

              je peux pas utiliser l'option "-i"

              ci dessous un bout du script

              #!/usr/bin/ksh

              path_file_mediapost=../fichier_maj

              mediapost=$path_file_mediapost/mediapost.txt

              hexapost_seq=$(sed -n '1 s/.*=\(.*\)/\1/p' $mediapost)

              hexapost_seq_maj=`expr $hexapost_seq + 1`

              echo $hexapost_seq
              echo $hexapost_seq_maj

              `sed "/HEXAPOST_SEQ/ s/[0-9]\+/${hexapost_seq_maj}/" $mediapost>fich.tmp && mv -f fich.tmp $mediapost`
              0
              1. Modérateur
                Ben si ça marchait avant, ça devrait marcher aussi, je n'ai modifié que la syntaxe de "sed", pas le reste (redirection et syntaxe bash).

                Quelle version de "sed" ? Si supérieure à 4.0.5 il existe l'option "-i" qui modifie le fichier directement...
                0
                1. Modérateur
                  Salut,

                  Remplace :
                  s/[ [:digit:]]/${hexapost_seq_maj}/
                  par :
                  s/[0-9]\+/${hexapost_seq_maj}/
                  et ça devrait le faire ;-))
                  0
                  1. salut jipicy

                    j'ai modifié la ligne de commande comme vous m'avez expliqué.

                    je met dans mon fichier

                    hexapost_seq=13

                    et j'execute et il m'affiche 14 donc ça marche mais le script ne modifie plus le fichier normalement il doit remplacer 13 par 14 dans le fichier mediapost

                    merci pour votre aide
                    0