[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Re: Contar caracteres en tiempo real



2010/11/14 Javier Barroso <javibarroso@gmail.com>:
> 2010/11/13 Marc Aymerich <glicerinu@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.
-- 
Marc


Reply to: