longitud de linea en bash

Iniciado por andaluz, 27 Marzo 2011, 18:30 PM

0 Miembros y 1 Visitante están viendo este tema.

andaluz

hola a todos, tengo una duda que creo que es muy simple, como puedo saber los caracteres que tiene una linea, por ejemplo:

echo 'Introduce un nombre: '
read -p nombre

como puedo sacar el numero de caracteres del nombre que se ha introducido por teclado??

saludos

SuperDraco

#1
El siguiente código no es mio, pero funciona:


Código (dos) [Seleccionar]

:getLength
set /a length+=1
set str=%*
:getLength_2
set "str=%str:~1%" && set /a length+=1
if defined str (goto :getLength_2) || (goto :eof)




Para medir la longitud sería algo como:
Set mensaje=PONAQUILOQUEQUIERAS
call :getLength %mensaje%


Y para mostrar la longitud, pues con un:
Echo El mensaje tiene %lenght% caracteres.


PD: Perdon es que le di al boton de postear sin querer xD
No he vuelto, solo estoy de paso.

andaluz

pitoloko, no entiendo lo que me has puesto, me lo puedes explicar??

andaluz

sigo sin entender el codigo!!!

mael0c

Ola
Para saber la longitud de la variable nombre (en tu ejemplo):
echo ${#nombre}

Existen más formas de hacerlo, buscando en google se encuentran rápidamente, pero esta me parece la más sencilla.

leogtz

#5
@pitoloko, es Bash, no Batch.

Hay varias, creo que ya había puesto varias, pero bueno, también puedes usar wc:

echo $string | tr -d '\n' | wc -c
echo `expr length $string` 
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

SuperDraco

#6
[quote author=Leo Gutiérrez. link=topic=322977.msg1595952#msg1595952 date=1301245926]
@pitoloko, es Bash, no Batch.
[/quote]

*****, perdón xD





[s]



[/s]
No he vuelto, solo estoy de paso.

andaluz

Este es el codigo que yo he realizado:

Código (bash) [Seleccionar]

echo 'Introduce una contraseña para comprobar si es segura o no: '
read -p contrasenia

echo 'Longitud: '$(#contrasenia)

for i in !'\n'
do
echo 'num: '$contrasenia
i=$(expr i \+ 1)
done


me pueden decir si podria ser algo asi para extraer el numero de caracteres??

leogtz

¿por qué no usas lo que te hemos puesto en vez de reinventar la rueda?

¿O lo tienes que hacer sin usar lo que te hemos puesto?
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

andaluz

no he usado lo que me habeis puesto porque hay cosas que no entiendo como funcionan. lo que he puesto si entiendo lo que hace.

se podria hacer de la forma que he puesto yo??