Supprimer le retour à la ligne après read

Fermé
Laverda32 - 28 nov. 2008 à 11:10
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 28 nov. 2008 à 13:55
Bonjour,

Je souhaite lire une variable, l'afficher à l'écran, faire un traitement de cette variable et afficher le résultat TOUT CA SUR LA MEME LIGNE. Le problème est que pour valider l'entrée de la variable dans le read, je dois taper sur "entree" et que ça déclenche un passage à la ligne suivante. Comment éviter ce passage à la ligne?

Merci,

Sergio
A voir également:

7 réponses

EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
28 nov. 2008 à 11:15
Je crois que c'est echo avec l'option -e ou -n qui empêche le retour à la ligne.
La touche entrée ne fait pas à proprement parler un saut de ligne dans ce cas ; c'est juste que les commandes echo font un retour à la ligne par défaut.

Si tu pouvais nous illustrer ton problème avec quelques lignes de code je pense qu'on pourrait être plus clair mais je pense d'expérience que ton problème se situe là. :)
1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
28 nov. 2008 à 12:03
Salut,

Regarde du côté de la commande "tput" (man tput) :
#!/bin/ksh

clear

tput cup 0 2
echo 1 |awk '{printf "valeur %3d ? ",$1}'
read -r x
y=`expr $x + 1`
tput cup 0 16
echo " --> "$y
Voir aussi dans la FAQ : La commande tput

;-))
0
Ah, je crois qu'on approche. Si je comprends bien, tput cup a b me positionne le curseur à la ligne a colonne b. C'est presque bon, sauf que je veux écrire la réponse sur la ligne où je me trouve et que je ne connais pas son numéro. Y a-t'il moyen de récupérer quelque part les coordonnées courantes du curseur?

Merci,

Sergio.
0
dans les variables d'environnement il y LINES et COLUMNS de valorisé dynamiquement (redimensionne kconsole pour le vérifier) , cela peut il aider ?
Antoine
0
Merci pour votre aide à tous. En fait, je m'en sors en faisant un clear en début de code pour etre sûr de commencer à la ligne zéro et ça marche bien sauf qu'arrivé en bas de la fenêtre, j'ai une ligne blanche qui s'insère à chaque fois. Voici le code :


#!/bin/ksh
clear
Colonne=50
Ligne=0
while [ 0 -eq 0 ];do
echo $Ligne|awk '{printf "valeur %3d ? ",$1}'
read x
y=`expr $x + 1`
tput cup $Ligne $Colonne
echo " --> "$y
Ligne=`expr $Ligne + 1`
done


et voici le résultat obtenu en entrant 0 à chaque fois (les lignes de "====" représentent le haut et le bas de ma fenetre) :


=======================================================================
valeur 4 ? 0 --> 1
valeur 5 ? 0 --> 1
valeur 6 ? 0 --> 1
valeur 7 ? 0 --> 1
valeur 8 ? 0 --> 1
valeur 9 ? 0 --> 1
valeur 10 ? 0 --> 1
valeur 11 ? 0 --> 1
valeur 12 ? 0 --> 1
valeur 13 ? 0 --> 1
valeur 14 ? 0 --> 1
valeur 15 ? 0
--> 1
valeur 16 ? 0
--> 1
valeur 17 ?
=======================================================================

C'est pas très joli... Quelqu'un a la solution pour supprimer cette ligne blanche?

Merci,

Sergio.
0

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

Posez votre question
Manifestement, le copier-coller n'est pas au point : il a fait sauter l'indentation dans le code et la ligne blanche dans le résultat. Il fallait lire :

#!/bin/ksh
clear
Colonne=50
Ligne=0
while [ 0 -eq 0 ];do
echo $Ligne|awk '{printf "valeur %3d ? ",$1}'
read x
y=`expr $x + 1`
tput cup $Ligne $Colonne
echo " --> "$y
Ligne=`expr $Ligne + 1`
done


et

=======================================================================
valeur 4 ? 0 --> 1
valeur 5 ? 0 --> 1
valeur 6 ? 0 --> 1
valeur 7 ? 0 --> 1
valeur 8 ? 0 --> 1
valeur 9 ? 0 --> 1
valeur 10 ? 0 --> 1
valeur 11 ? 0 --> 1
valeur 12 ? 0 --> 1
valeur 13 ? 0 --> 1
valeur 14 ? 0 --> 1
valeur 15 ? 0 --> 1

valeur 16 ? 0 --> 1

valeur 17 ?
=======================================================================
Désolé,

Sergio.
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
28 nov. 2008 à 13:55
et avec
tput cursor_up
le curseur remonte d'une ligne ?
0
Merci pour ta réponse, mais je me suis mal fait comprendre. Le retour à la ligne après le echo, je maitrise : comme l'option -n ne marche pas, je fais un printf avec awk sans mettre \n (bon, il y a peut être plus simple...). Mon problème ne vient donc pas de l'echo mais du read : pour que la réponse soit prise en compte, il faut taper return, et c'est ce return qui déclenche le saut de ligne que je voudrais éviter.

Voici un exemple :

#!/bin/ksh
echo 1|awk '{printf "valeur %3d ? ",$1}'
read x
y=`expr $x + 1`
echo " --> "$y

je voudrais que tout s'écrive sur la même ligne, même le $y.

Merci de ton aide,

Sergio.
-1