Page 1 sur 1
[retour chariot] passer à une commande
Publié : lun. 16 déc. 2019, 13:16
par AchilleFraisse
bonjour
j'ai un programme qui attends en parametre un parametre (l'executable se nomme prog).
j'ai marqué dans un script :
mais mon programme m'affiche les caractères '\r' et '\n' au lieu d'afficher une nouvelle ligne.
quelqu'un sait comment je peux faire pour qui mon script interprete les retours chariot ?
Re: [retour chariot] passer à une commande
Publié : lun. 16 déc. 2019, 19:40
par papajoke
bonjour
Le plus simple est de faire dans ton programme (nous somme en open source) un remplace chaine
\n
par le caractère #13
ps:
\r

Re: [retour chariot] passer à une commande
Publié : lun. 16 déc. 2019, 19:58
par benjarobin
Bonjour,
C'est possible. J'ai fait quelques tests... Sous zsh comme sous bash:
Code : Tout sélectionner
hexdump -C <<< "Hello\r\n"
00000000 48 65 6c 6c 6f 5c 72 5c 6e 0a |Hello\r\n.|
Code : Tout sélectionner
hexdump -C <<< 'Hello\r\n'
00000000 48 65 6c 6c 6f 5c 72 5c 6e 0a |Hello\r\n.|
Code : Tout sélectionner
hexdump -C <<< $'Hello\r\n'
00000000 48 65 6c 6c 6f 0d 0a 0a |Hello...|
Attention la commande echo (en built-in) sous zsh ne se comporte pas de la même façon que
/usr/bin/echo
La commande suivante :
echo "Hello\r\n"
sous zsh affiche
Hello
avec un saut de ligne, tandis qu'avec bash cela affiche
Hello\r\n
La commande suivante :
echo $'Hello\r\n'
sous zsh comme sous bash affiche
Hello
avec un saut de ligne
En résumé, pour que bash/zsh évalue les séquences d’échappement, il est nécessaire d’utiliser la syntaxe
$' '
Il existe une autre solution pour évaluer les caractères d'échappement :
/usr/bin/echo -e "Hello\r\n"
Re: [retour chariot] passer à une commande
Publié : lun. 16 déc. 2019, 20:49
par sukolyn
salut,
àmha, c'est au prog
d'ajouter ce qu'il faut, pas à l'utilisateur d'indiquer le "format", qui fera que les informations seront traitées d'une manière ou d'une autre.
l'utilisateur, lui, ne doit avoir à entrer que Hello World
.
Re: [retour chariot] passer à une commande
Publié : lun. 16 déc. 2019, 21:27
par benjarobin
sukolyn a écrit : ↑lun. 16 déc. 2019, 20:49àmha, c'est au
prog
d'ajouter ce qu'il faut, pas à l'utilisateur d'indiquer le "format", qui fera que les informations seront traitées d'une manière ou d'une autre.
l'utilisateur, lui, ne doit avoir à entrer que
Hello World
.
Je ne suis clairement pas d'accord. Je ne sais pas ce que fais le programme, mais clairement le programme s'attend à avoir les données dans un certain format. Il ne peut pas magiquement détecter le format d'entrée (Json, XML, CSV, ....)
Et ce n'est pas forcément le but de sa question, qui est : comment passer des sauts de lignes via paramètre
Re: [retour chariot] passer à une commande
Publié : lun. 16 déc. 2019, 22:02
par sukolyn
quand tu écris un programme, tu lui donnes les moyens d'identifier ce qu'il reçoit. no magic.
j'ai appris qu'il faut toujours séparer les données du format (hors séparateur de champs, de ligne, mais ce n'est pas de ça qu'il s'agit), or, ici, il est question de passer des données accompagnées d'indication de format, voire une validation.
ça ne me paraît pas correct, et je doute de la qualité d'un programme qui chargerait l'utilisateur de suppléer à ce qu'il (le programme) devrait faire. beware!
KISS pour le programmeur, et KISS pour l'utilisateur.