2010/11/15 Javier Barroso <[email protected]>: > 2010/11/14 Marc Aymerich <[email protected]>: >> 2010/11/14 Javier Barroso <[email protected]>: >>> 2010/11/13 Marc Aymerich <[email protected]>: >>>> Y Ahora para borrar tendrías que usar algo parecido a esto: >>>> >>>> if [ "$c" == "$(echo backspace)" ]; then a={$a%?}; fi >>>> >>>> Desgraciadamente esto ultimo no te va a funcionar, No se como hacer un >>>> echo del carácter backspace !! :D Pero si logras comparar $c con >>>> backspace ahí lo tienes :) . >>> >>> Puedes coger ese caracter con: >>> >>> backspace=$(echo -en '\b') al principio del script y luego usar >>> "$backspace" para comparar >>> >>> Sigo sin tener un bash a mano para hacer la prueba oportuna, pero creo >>> que podría funcionar como dice Marc >> >> >> Buenas Javier, el carácter backspace es un poco puñetero. Yo estoy >> probando con gnome-terminal y al parecer cuando pulsas backspace el >> carácter que le llega a bash no es "\b" sino "\x7F". No se si las >> otras terminales se comportan igual. Bueno que para que al menos a mi >> me funcione tengo que hacer la comparación así: >> if [ "$c" == "$(echo -ne "\x7F")" ]; then a=${a%?}; >> >> y de ninguna otra manera he conseguido que funcione :( >> >> >> Rantis prueba este código a ver que te parece: >> >> #!/bin/bash >> while IFS= read -r -n1 c; do >> if [ "$c" == "$(echo)" ]; then break; fi >> if [ "$c" == "$(echo -ne "\x7F")" ]; then >> a=${a%?}; >> echo -en "\r$a ${#a} " >> else a="$a$c" >> echo -en "\r$a ${#a}" >> fi >> done >> echo "El string resultante es: $a" >> >> Por desgracia aún faltaría pulir unos caracteres desagradables que >> aparecen al pulsar backspace. > > Se arregla con el -s en el read: > cad="" > while IFS= read -s -r -n 1 c; do > if [[ "$c" == $(echo -e '\x7f') ]]; then cad=${cad%?}; else cad="$cad$c"; fi; > printf "%-50s\r" "$cad [${#cad}]"; > done
Muy buena solución javier. Con esto hemos llevado el comando read al limite, pocas opciones hemos dejado para usar ;) saludos. -- Marc -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

