Limiter la longueur d'une variable

Résolu
dispou -  
 dispou -
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. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    quel shell ?
    pas besoin du echo
    NOM=${NOM:0:31}
    0
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Quel shell ? Quelle version ?
    0
  3. dispou
     
    AIX 5.3
    Ca me met toujours la même erreur
    0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    que répond echo $SHELL
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dispou
     
    /usr/bin/ksh
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Quelle version de ksh ?
      0
  7. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    et pourtant
    ksh ~ $ NOM="123456789901234"   
    ksh ~ $ NOM=${NOM:0:5}   
    ksh ~ $ echo $NOM   
    12345   
    ksh ~ $ 

    que répond ksh --version
    0
    1. dispou
       
      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. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      Par contre, ça plante lorsque c'est lancé au travers du script
      la première ligne du script est bien #!/bin/ksh
      0
    4. dispou
       
      Oui, c'est bien ça.
      0
    5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      peut-on voir le script ?
      0
  8. dispou
     
    --version: 0403-010 A specified flag is not valid for this command.
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      echo $KSH_VERSION
      0
    2. dispou
       
      Version M-11/16/88f
      0
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Si c'est bien la version "88", elle n'a pas l'air de gérer la substitution de paramètres ;-((

      man ksh88
      0
  9. dispou
     
    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