Limiter la longueur d'une variable

Résolu
Bonjour à tous,
Je souhaite, dans un script sous AIX limiter à 32 caractères le contenu d'une variable.
J'ai donc ajouté la ligne suivante :
NOM=$(echo ${NOM:0:31})
Mais ca me retourne
0403-011 The specified substitution is not valid for this command.
Ou peut bien se trouver l'erreur ?

Merci d'avance.

Dipsou

8 réponses

  1. Contributeur
    hello
    quel shell ?
    pas besoin du echo
    NOM=${NOM:0:31}
    0
    1. Contributeur
      Salut,

      Quel shell ? Quelle version ?
      0
      1. AIX 5.3
        Ca me met toujours la même erreur
        0
        1. Contributeur
          que répond echo $SHELL
          0
          1. /usr/bin/ksh
            0
            1. Contributeur
              Quelle version de ksh ?
              0
          2. Contributeur
            et pourtant
            ksh ~ $ NOM="123456789901234"   
            ksh ~ $ NOM=${NOM:0:5}   
            ksh ~ $ echo $NOM   
            12345   
            ksh ~ $ 

            que répond ksh --version
            0
            1. Ca me donne la même chose lorsque je saisis ça
              Par contre, ça plante lorsque c'est lancé au travers du script
              0
            2. Contributeur
              Es-tu sûr que ton shell supporte la syntaxe "$(commande)" ?

              Essaye plutôt avec les quotes inverses : 'commande'

              PS. Ce p*tain d'éditeur de CCM ne supporte toujours pas les quotes inverses ;-((
              Donc les quotes autour de l'expression sont bien obtenues avec Alt Gr + 7 (le 7 du pavé alphanumérique)

              Édit : Ne pas tenir compte de ce thread, un petit tour sur la man page (voir plus bas) permet de voir que la syntaxe est compatible.
              0
            3. Contributeur
              Par contre, ça plante lorsque c'est lancé au travers du script
              la première ligne du script est bien #!/bin/ksh
              0
            4. Oui, c'est bien ça.
              0
            5. Contributeur
              peut-on voir le script ?
              0
          3. --version: 0403-010 A specified flag is not valid for this command.
            0
            1. Contributeur
              echo $KSH_VERSION
              0
            2. Version M-11/16/88f
              0
            3. Contributeur
              Si c'est bien la version "88", elle n'a pas l'air de gérer la substitution de paramètres ;-((

              man ksh88
              0
          4. Merci à tous pour votre aide précieuse, je me suis finalement rabattu sur un 'echo $NOM | cut -c1-32'qui fait le job.

            Merci encore
            0