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

  • Votes
  • Date
  • Date décroissante
  1. ça marche

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

                Remplace :
                s/[ [:digit:]]/${hexapost_seq_maj}/
                par :
                s/[0-9]\+/${hexapost_seq_maj}/
                et ça devrait le faire ;-))
                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