OVH Cloud OVH Cloud

[bash] cut

2 réponses
Avatar
hugolino
Bonjour à tous (et à toutes :-/)

Et bonne année.


J'ai un problème avec cut que je n'arrive pas à comprendre

J'ai une ligne de script qui coupe ce que l'utilisateur à saisi:

echo " 1) Vous avez saisi : '"$Reponse"'."
Reponse=`echo $Reponse | tr 'A-Z' 'a-z'`
echo " 2) Vous avez saisi : '"$Reponse"'."
Reponse=`echo $Reponse | cut -b 1-3`
echo " 3) Vous avez saisi : '"$Reponse"'."
exit 0

Et sur la console, ça donne:

1) Vous avez saisi : 'FlMMMM'.
2) Vous avez saisi : 'flmmmm'.
/usr/local/bin/Mo: flm: command not found
3) Vous avez saisi : 'flmmmm'.


Le tr marche très bien mais pas le cut...

Enfin le cut coupe bien la chaine aux trois premiers caractères, mais il ne
donne pas la réponse à la variable, il la fait évaluer par le shell qui ne
risque pas de la connaître.

J'ai essayé ces commandes en console, ça donne le même résultat...


Merci de votre aide.

2 réponses

Avatar
David LE BOURGEOIS
Bonjour à tous (et à toutes :-/)


Bonjoir


Et bonne année.


Meilleurs voeux.



J'ai un problème avec cut que je n'arrive pas à comprendre

J'ai une ligne de script qui coupe ce que l'utilisateur à saisi:

echo " 1) Vous avez saisi : '"$Reponse"'."
Reponse=`echo $Reponse | tr 'A-Z' 'a-z'`
echo " 2) Vous avez saisi : '"$Reponse"'."
Reponse=`echo $Reponse | cut -b 1-3`
echo " 3) Vous avez saisi : '"$Reponse"'."
exit 0

Et sur la console, ça donne:

1) Vous avez saisi : 'FlMMMM'.
2) Vous avez saisi : 'flmmmm'.
/usr/local/bin/Mo: flm: command not found
3) Vous avez saisi : 'flmmmm'.


Le tr marche très bien mais pas le cut...

Enfin le cut coupe bien la chaine aux trois premiers caractères, mais il ne
donne pas la réponse à la variable, il la fait évaluer par le shell qui ne
risque pas de la connaître.

J'ai essayé ces commandes en console, ça donne le même résultat...


Essaie par étape intermédiaire : que donne 'echo $Reponse | cut -b 1-3',
sans passer par une variable ?
Si ce n'est pas concluant, refait la même chose, mais avec un set -vx,
pour voir ce qui se passe.

En tout cas, chez moi ça fonctionne :

~ $ reponse="abcdefghi"
~ $ repcut="$(echo "$reponse" | cut -b 2-4)"
~ $ echo "$repcut"
bcd




Merci de votre aide.




Bon courage.


--
David LE BOURGEOIS

Citation aléatoire (fortune) :

Déconner, c'est se vider de la connerie acquise par osmose.
Frédéric Dare.

Avatar
hugolino
Le Fri, 02 Jan 2004 17:07:13 +0100, David LE BOURGEOIS a écrit:

Meilleurs voeux.


Tout pareil.

echo " 1) Vous avez saisi : '"$Reponse"'."
Reponse=`echo $Reponse | tr 'A-Z' 'a-z'`
echo " 2) Vous avez saisi : '"$Reponse"'."
Reponse=`echo $Reponse | cut -b 1-3`
echo " 3) Vous avez saisi : '"$Reponse"'."
exit 0

Et sur la console, ça donne:

1) Vous avez saisi : 'FlMMMM'.
2) Vous avez saisi : 'flmmmm'.
/usr/local/bin/Mo: flm: command not found
3) Vous avez saisi : 'flmmmm'.

Le tr marche très bien mais pas le cut...


Essaie par étape intermédiaire : que donne 'echo $Reponse | cut -b 1-3',
sans passer par une variable ?


Ca faisait la même erreur dans le script et en console (encore heureux)

En tout cas, chez moi ça fonctionne :

~ $ reponse="abcdefghi"
~ $ repcut="$(echo "$reponse" | cut -b 2-4)"
~ $ echo "$repcut"
bcd


Oui chez moi aussi, en fait il ne fallait pas mettre de '`' mais des
'"', mais alors pourquoi la ligne avec le tr marche-t-elle ?

Mystère

Merci de votre aide.
Bon courage.



Merci de tout aide, ça fait un moment que je m'arrache les cheveux là
dessus.

--
Hugo