Limiter la longueur d'une variable

[Résolu/Fermé]
Signaler
-
 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

Messages postés
18302
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
23 octobre 2021
5 411
hello
quel shell ?
pas besoin du echo
NOM=${NOM:0:31}
Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 430
Salut,

Quel shell ? Quelle version ?
AIX 5.3
Ca me met toujours la même erreur
Messages postés
18302
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
23 octobre 2021
5 411
que répond echo $SHELL
/usr/bin/ksh
Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 430
Quelle version de ksh ?
Messages postés
18302
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
23 octobre 2021
5 411
et pourtant
ksh ~ $ NOM="123456789901234"   
ksh ~ $ NOM=${NOM:0:5}   
ksh ~ $ echo $NOM   
12345   
ksh ~ $ 

que répond ksh --version
Ca me donne la même chose lorsque je saisis ça
Par contre, ça plante lorsque c'est lancé au travers du script
Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 430
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.
Messages postés
18302
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
23 octobre 2021
5 411
Par contre, ça plante lorsque c'est lancé au travers du script
la première ligne du script est bien #!/bin/ksh
Oui, c'est bien ça.
Messages postés
18302
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
23 octobre 2021
5 411
peut-on voir le script ?
--version: 0403-010 A specified flag is not valid for this command.
Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 430
echo $KSH_VERSION
Version M-11/16/88f
Messages postés
36324
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 430
Si c'est bien la version "88", elle n'a pas l'air de gérer la substitution de paramètres ;-((

man ksh88
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