Supprimer le retour à la ligne après read
Laverda32
-
dubcek Messages postés 19032 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 19032 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- Supprimer le retour à la ligne après read
- Supprimer rond bleu whatsapp - Guide
- Retour à la ligne excel mac - Guide
- Supprimer retour à la ligne word ✓ - Forum Word
- Retour à la ligne google sheet ✓ - Forum Google Docs
- Partager photos en ligne - Guide
7 réponses
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à. :)
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à. :)
Salut,
Regarde du côté de la commande "tput" (man tput) :
;-))
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 " --> "$yVoir aussi dans la FAQ : La commande tput
;-))
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.
Merci,
Sergio.
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.
#!/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.
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.
#!/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.
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.
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.