Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # pmt-nicks
- # Sencillo script para generar nombres y apellidos aleatorios
- # Este script en bash es parte de Puppter Master Tweet y se
- # utiliza para generar nombres de personas y nicks acordes.
- # fanta <fanta@elbinario.net>
- # Archivos y variables
- archivo_nombres="../diccionarios/nombres.txt" # Path del archivo que contiene los nombres. Los nombres no pueden contener el caracter ;
- archivo_apellidos="../diccionarios/apellidos.txt" # Path del archivo que contiene los apellidos, Los apellidos no pueden contener el caracter ;
- version="0.1" # versión del programa
- nombre_programa="pmt-nicks" # nombre del programa
- nnombres=$(cat $archivo_nombres | wc -l) # número de nombres en el archivo
- napellidos=$(cat $archivo_apellidos | wc -l) # número de apellidos en el archivo
- # Errores
- error1="Error: Ha de introducir un argumento"
- error2="Demasiados argumentos"
- # Funciones
- function muestraayuda {
- echo -e "$nombre_programa - $version"
- echo -e "-h --help\t\t Muestra esta ayuda."
- echo -e "-v --version\t\t Muestra la versión."
- echo -e "-n --nick\t\t Genera un nick aleatorio."
- echo -e "-a --nya\t\t Genera un nombre y un apellido."
- echo -e "-b --ny2a\t\t Genera un nombre y dos apellidos."
- echo -e "-c --nny2a\t\t Genera un nombre, dos apellidos y un nick acorde."
- echo -e "-d --nny2acsv\t\t Genera un nombre, dos apellidos y un nick acorde en valores separados por ;"
- }
- function generanombre {
- rnnombres=`echo $(($RANDOM%$nnombres))` # Obtenemos un número aleatorio entre 1 y el número de nombres.
- elnombre=$(cat $archivo_nombres | head -$rnnombres | tail -1) # obtenemos el nombre aleatorio
- echo "$elnombre" # Escupimos el nombre
- }
- function generaapellido {
- rnapellidos=`echo $(($RANDOM%$napellidos))` # Obtenemos un número aleatorio entre 1 y el número de apellidos.
- elapellido=$(cat $archivo_apellidos | head -$rnapellidos | tail -1) # Obtenemos el apellido aleatorio
- echo "$elapellido" # Escupimos el apellido
- }
- function generanick {
- # Esta función escupe realmente 3 datos: nombre, apellido y nick separados por ;
- # El nick se generará en base al nombre y primer apellido. No se genera aquí segundo apellido.
- elnombre=$(generanombre) # almacenamos el nombre seleccionado aleatoriamente
- elapellido=$(generaapellido) # almacenamos el apellido seleccionado aleatoriamente
- ncelnombre=$(echo "${#elnombre}") # contamos los caratactes del nombre y los almacenamos
- ncelapellido=$(echo "${#elapellido}") # contamos los caracteres del apellido y los almacenamos
- if [ "$ncelnombre" -ge 4 ]; then # Entra si el n de caracteres del nombre es mayor o igual a 4
- nickparte1=$(echo $elnombre | cut -c 1-4) # recortamos los primeros 4 caracteres
- ncnickparte1=4 # Sabemos que tiene 4 caracteres
- else # Entra si el n de caracteres del nombre es menor de 4
- nickparte1=$(echo $elnombre)
- ncnickparte1=$(echo "${#nickparte1}") # contamos los caratactes de la primera parte del nick
- fi
- if [ "$ncelapellido" -ge 4 ]; then # Entra si el n de caracteres del apellido es mayor o igual a 4
- nickparte2=$(echo $elapellido | cut -c 1-4) # recortamos los primeros 4 caracteres
- ncnickparte2=4 # Sabemos que tiene 4 caracteres
- else # Entra si el n de caracteres del apellido es menor de 4
- nickparte2=$(echo $elapellido)
- ncnickparte2=$(echo "${#nickparte2}") # contamos los caratactes de la segunda parte del nick
- fi
- # Ahora vamos a echar cuentas. El nick tendrá 8 caracteres y en caso de tener menos se rellena
- elnick=$(echo "$nickparte1$nickparte2" | tr '[:upper:]' '[:lower:]') # el nick en minusculas
- ncelnick=$(echo "${#elnick}") # contamos los caratactes del nick
- if [ "$ncelnick" -eq 8 ]; then # Entra si el n de caracteres del nick es igual a 8
- echo "$elnombre;$elapellido;$elnick" # Escupimos el nombre, primer apellido y el nick
- else
- rellenodechocolate=`echo $(($RANDOM%99999))`
- elnick="$(echo "$elnick$rellenodechocolate" | cut -c 1-8)" # rellenamos y cortamos sobrante
- echo "$elnombre;elapellido;$elnick" # Escupimos el nombre, primer apellido y el nick
- fi
- }
- # El control de argumentos. La parte main del script como quien dice.
- if [ "$#" -eq 0 ]; then # Cuando el usuario no mete ningún parametro
- echo -e "$error1" # le mostramos el error
- muestraayuda # le mostramos la ayuda
- fi
- if [ "$#" -eq 1 ]; then
- if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then # cuando el usuario usa el argumento -h
- muestraayuda # le mostramos la ayuda
- fi
- if [ "$1" == "-v" ] || [ "$1" == "--version" ]; then # cuando el usuario usa el argumento -v
- echo -e "$nombre_programa - $version" # le mostramos la versión de este script
- fi
- if [ "$1" == "-n" ] || [ "$1" == "--nick" ]; then # cuando el usuario usa el argumento -n
- nickencrudo=$(generanick) # Almacenamos los datos que nos da la función generanick
- echo "$nickencrudo" | cut -d ";" -f 3
- fi
- if [ "$1" == "-a" ] || [ "$1" == "--nya" ]; then # cuando el usuario usa el argumento -a
- echo "$(generanombre) $(generaapellido)" # Mostramos el nombre y el apellido
- fi
- if [ "$1" == "-b" ] || [ "$1" == "--ny2a" ]; then # cuando el usuario usa el argumento -b
- echo "$(generanombre) $(generaapellido) $(generaapellido)" # Mostramos el nombre y 2 apellidos
- fi
- if [ "$1" == "-c" ] || [ "$1" == "--nny2a" ]; then # cuando el usuario usa el argumento -c
- nickencrudo=$(generanick) # Almacenamos los datos que nos da la función generanick
- nombre=$(echo "$nickencrudo" | cut -d ";" -f 1) # Extraemos el nombre
- apellido1=$(echo "$nickencrudo" | cut -d ";" -f 2) # Extraemos el apellido1
- apellido2=$(generaapellido) # Generamos un apellido2
- nick=$(echo "$nickencrudo" | cut -d ";" -f 3) # Extraemos el nick
- echo "$nombre $apellido1 $apellido2 $nick" # Mostramos el nombre, apellido1, apellido2 y nick
- fi
- if [ "$1" == "-d" ] || [ "$1" == "--nny2acsv" ]; then # cuando el usuario usa el argumento -d
- nickencrudo=$(generanick) # Almacenamos los datos que nos da la función generanick
- nombre=$(echo "$nickencrudo" | cut -d ";" -f 1) # Extraemos el nombre
- apellido1=$(echo "$nickencrudo" | cut -d ";" -f 2) # Extraemos el apellido1
- apellido2=$(generaapellido) # Generamos un apellido2
- nick=$(echo "$nickencrudo" | cut -d ";" -f 3) # Extraemos el nick
- echo "$nombre;$apellido1;$apellido2;$nick" # Mostramos el nombre, apellido1, apellido2 y nick separados por ;
- fi
- fi
- if [ "$#" -ge 2 ]; then # Cuando el usuario mete más de 1 parametro
- echo -e "$error2" # le mostramos el error
- muestraayuda # le mostramos la ayuda
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement