2010/11/14 Marc Aymerich <glicer...@gmail.com>: > 2010/11/14 Javier Barroso <javibarr...@gmail.com>: >> 2010/11/13 Marc Aymerich <glicer...@gmail.com>: >>> 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 Saludos -- To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/aanlktik4gbjbwnouoxcbhhyoxk5qiz6nss3x_62mk...@mail.gmail.com