Limiter la longueur d'une variable

Résolu/Fermé
dispou - 27 avril 2012 à 16:24
 dispou - 30 avril 2012 à 10:49
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

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
27 avril 2012 à 16:37
hello
quel shell ?
pas besoin du echo
NOM=${NOM:0:31}
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
27 avril 2012 à 16:38
Salut,

Quel shell ? Quelle version ?
0
AIX 5.3
Ca me met toujours la même erreur
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
27 avril 2012 à 16:44
que répond echo $SHELL
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
/usr/bin/ksh
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
27 avril 2012 à 16:56
Quelle version de ksh ?
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 27/04/2012 à 16:56
et pourtant
ksh ~ $ NOM="123456789901234"   
ksh ~ $ NOM=${NOM:0:5}   
ksh ~ $ echo $NOM   
12345   
ksh ~ $ 

que répond ksh --version
0
Ca me donne la même chose lorsque je saisis ça
Par contre, ça plante lorsque c'est lancé au travers du script
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
Modifié par zipe31 le 27/04/2012 à 18:06
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
28 avril 2012 à 08:00
Par contre, ça plante lorsque c'est lancé au travers du script
la première ligne du script est bien #!/bin/ksh
0
Oui, c'est bien ça.
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 avril 2012 à 10:47
peut-on voir le script ?
0
--version: 0403-010 A specified flag is not valid for this command.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
27 avril 2012 à 17:02
echo $KSH_VERSION
0
Version M-11/16/88f
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
27 avril 2012 à 17:21
Si c'est bien la version "88", elle n'a pas l'air de gérer la substitution de paramètres ;-((

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