Linux/Unix Shell Scripting - entrada de solo números y letras, no caracteres especiales

 
Vista:
sin imagen de perfil
Val: 17
Ha aumentado 1 puesto en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

entrada de solo números y letras, no caracteres especiales

Publicado por Marta (11 intervenciones) el 06/11/2017 15:06:30
Buenas tardes,
Estoy haciendo un ejercicio que te pide que te solicite el programa una entrada y solo te reconoce número y letras , que no reconozca caracteres especiales. He conseguido el que me reconozca los números pero no las letras.

Paso lo que tengo hecho por si me podéis hechar una mano o dar una pista.

1
2
3
4
5
6
7
8
#Se comprueba que la entrada pasada es un número o una letra
 
. validate_entrada='^[0-9]+([,][0-9]+)+?$'
 if ! [[ $entrada =~ $validate_entrada ]]; then
echo Entrada no valida
 elif ! [[ $entrada = $validate_entrada ]]; then
echo Entrada Valida fi
fi

( He probado en poner dentro del validate [a z][A-Z] pero no mel o reconoce

Gracias por anticipado por su ayuda

Saludos,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de abzerox
Val: 101
Oro
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

entrada de solo números y letras, no caracteres especiales

Publicado por abzerox (27 intervenciones) el 07/11/2017 05:28:18
Hola prueba de esta forma:

1
2
3
4
5
6
7
8
validate_entrada='^[A-Za-zÁÉÍÓÚáéíóú0-9]+$'
entrada='TextoyNúmeros'
 
if [[ ! $entrada =~ $validate_entrada ]]; then
    echo "Entrada no valida"
elif [[ $entrada =~ $validate_entrada ]]; then
    echo "Entrada Valida"
fi

La regx anterior permite letras y números. Si queires que permita tambien caracteres espacios puedes agregar un espacio al final de la misma así
1
validate_entrada='^[A-Za-zÁÉÍÓÚáéíóú0-9 ]+$'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha aumentado 1 puesto en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

entrada de solo números y letras, no caracteres especiales

Publicado por Marta (11 intervenciones) el 07/11/2017 15:09:19
Buenas tardes,

Muchísimas gracias por tu pronta respuesta.

He probado lo que me han indicado y me interpreta como Entrada no válida, ponga lo que ponga, adjunto lo que he puesto por si he puesto algo raro.

1
2
3
4
5
6
7
8
#Se comprueba que la entrada pasada es un número o una letra.
 
validate_entrada='^[A-Za-zÁÉÍÓÚáéíóú0-9)+?$'
if [[ ! $entrada =~ $validate_entrada ]]; then
echo "Entrada no valida"
elif [[ $entrada = $validate_entrada ]]; then
echo "Entrada Valida"
fi

Si puedes ya me comentarás si ves algo mal ..

Muchas gracias anticipadamente,

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzerox
Val: 101
Oro
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

entrada de solo números y letras, no caracteres especiales

Publicado por abzerox (27 intervenciones) el 07/11/2017 23:26:44
Hola, si te fijas en el código que te he compartido defino una variable $entrada. Tu de donde tomas la entrada que vas evaular?.
En caso de que la entrada sea un argumento puedes probar con $1 asi:
1
2
3
4
5
6
validate_entrada='^[A-Za-zÁÉÍÓÚáéíóú0-9]+$'
if [[ ! $1 =~ $validate_entrada ]]; then
    echo "Entrada no valida"
else
    echo "Entrada Valida"
fi

Lo ejecutas así
1
$ ./tu_script.sh Entrada
# Entrada Valida
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha aumentado 1 puesto en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

entrada de solo números y letras, no caracteres especiales

Publicado por Marta (11 intervenciones) el 08/11/2017 16:23:19
Buenas tardes de nuevo,

Disculpa en molestarte otra vez pero la variable entrada la defino así ( al comienzo, desde teclado)

#Se solicita una entrada al usuario.
echo "Introduzca una entrada"
read entrada

Entonces no llego a entender porqué no me lo coge

Disculpa de nuevo,

Muchas gracias,

Saludos,

Marta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzerox
Val: 101
Oro
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

entrada de solo números y letras, no caracteres especiales

Publicado por abzerox (27 intervenciones) el 09/11/2017 03:52:06
Prueba de esta forma:

1
2
3
4
5
6
7
8
validate_entrada='^[A-Za-zÁÉÍÓÚáéíóú0-9]+$'
read -p "Introduzca una entrada: " entrada
 
if [[ ! $entrada =~ $validate_entrada ]]; then
    echo "Entrada no valida"
else
    echo "Entrada Valida"
fi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

entrada de solo números y letras, no caracteres especiales

Publicado por Jose Alvaro (2 intervenciones) el 14/05/2021 10:25:42
Hola Abzerox si en esta misma validación quiero que me valide la letra Ññ, cómo sería, porque al ingresar entrada si pongo una palabra con ñ me sale entrada no válido, el resto funciona bn
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EXCELENTE APORTACION

Publicado por cesar (1 intervención) el 27/02/2024 17:33:54
Excelente aportación, fue de gran ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha aumentado 1 puesto en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

entrada de solo números y letras, no caracteres especiales

Publicado por Marta (11 intervenciones) el 09/11/2017 16:19:58
Buenas tardes de nuevo,
Creo que voy a desistir del programa, sigue sin realizarme la función que tiene que hacer.
Adjunto código completo que estoy poniendo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
# Script que pide al usuario que introduzca una entrada y diga si es correcta o no. ( Sería correcta si se trata de números o letras).
 
#Se comprueba que no hay espacios y que es sólo una entrada.
 
WSP_IFS=$'\x20'$'\x09'$'\x0A'$'\x0D'
 
echo "Introduce una entrada"
    read  entrada
 
#Se comprueba que la entrada pasada es un número o una letra.
 
validate_entrada='^[A-Za-zÁÉÍÓÚáéíóú0-9)+$'
 
if !  [[  $entrada =~ $validate_entrada ]]; then
echo "Entrada no valida"
else
 
echo "entrada Valida"
fi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzerox
Val: 101
Oro
Ha mantenido su posición en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

entrada de solo números y letras, no caracteres especiales

Publicado por abzerox (27 intervenciones) el 09/11/2017 23:26:39
Hola Marta, has probado el código que te compartido ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha aumentado 1 puesto en Linux/Unix Shell Scripting (en relación al último mes)
Gráfica de Linux/Unix Shell Scripting

entrada de solo números y letras, no caracteres especiales

Publicado por Marta (11 intervenciones) el 10/11/2017 07:23:09
Buenos días,

Sí, hice el código que me compartiste pero sólo me aparece entrada no válida, pasándole la entrada que le pase.

Ya lo siento :(

Gracias por tu ayuda y tu tiempo

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

entrada de solo números y letras, no caracteres especiales

Publicado por Jose Alvaro (2 intervenciones) el 14/05/2021 10:21:33
Hola, veo que en la entrada
validate_entrada='^[A-Za-zÁÉÍÓÚáéíóú0-9)+$
Tienes después de 0-9 un ) y debería ser ].

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar