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}
    1. Contributeur
      et pourtant
      ksh ~ $ NOM="123456789901234"   
      ksh ~ $ NOM=${NOM:0:5}   
      ksh ~ $ echo $NOM   
      12345   
      ksh ~ $ 

      que répond ksh --version
      1. Ca me donne la même chose lorsque je saisis ça
        Par contre, ça plante lorsque c'est lancé au travers du script
      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.
      3. Contributeur
        Par contre, ça plante lorsque c'est lancé au travers du script
        la première ligne du script est bien #!/bin/ksh
      4. Oui, c'est bien ça.
      5. Contributeur
        peut-on voir le script ?
    2. --version: 0403-010 A specified flag is not valid for this command.
      1. Contributeur
        echo $KSH_VERSION
      2. Version M-11/16/88f
      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
    3. 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