Ir al contenido principal

Programación Bash Script desde CERO - PARTE 5



  1. Realice un shell-script que admita tres palabras como argumentos y que muestre un mensaje informando de las relaciones de igualdad y desigualdad entre esas palabras. Por linea de comandos. Todas las posibilidades entre las 3. No va con for.
  2. Mostrar los ficheros del  directorio donde se ejecuta este script en los que NO tenemos permiso de escritura  (Para ejecutar este script no entrar en el sistema como root ya que root siempre tendrá permisos de escritura).
    Los que no tienen permisos de escritura.
  3. Realizar un script que muestre los números que hay entre dos nº pasados por línea de comando, el cuadrado de cada uno, la suma de ellos, la multiplicación de cada uno.
  4. Si el primer nº es mayor que el 2º debemos tenerlo en cuenta y debe funcionar. Deben pasarse exactamente dos parámetros.
    Por linea de comandos. La suma debe ser de todos los números comprendidos entre los dos pasados por comando. Con la multiplicación igual que con la suma.
  5. Mostrar por pantalla el día de la semana en el que estamos con todas las letras.
  6. Realiza un script que escriba al revés una palabra.
     
  7. Crear un scripts que muestre por pantalla las tablas de multiplicar del 1 al 10

Programación Bash Script desde CERO



-------------------------------------



 clear

##### INICIO FUNCIONES #####

function menu()
{
    clear
    echo "               MENU                  "
    echo "_____________________________________"
    echo "|                                    |"
    echo "| 1. Crea Carpeta P15 en Home        |"
    echo "| 2. Introduce AMIGOS                |"
    echo "| 3. Copias en BACKUP                |"
    echo "| 4. Crea fichero vacio en BACKUP    |"
    echo "| 5. AMIGOS de Sevilla               |"
    echo "| 6. AMIGOS de la ciudad ...         |"
    echo "| 7. Nº de AMIGOS de cada ciudad     |"
    echo "| 8. Busca AMIGO y di su Telefono    |"
    echo "| 9. SALIR                           |"
    echo "|____________________________________|"
    read opcion
}

function pausa()
{
    read -p "Presiona cualquier tecla para continuar ..."
    echo ""
}

function crea_carpeta()
{
    if test -d ~/P15
    then
        echo "La carpeta P15 en Home ya existe"
    else
        mkdir ~/P15
        echo "Se acaba de crar la carpeta P15 en Home"
        echo ""
    fi
}

function mas_amigos()
{
    resp=s
        while test $resp = s
        do
            echo "NOMBRE:"
                read nombre
                echo "EMAIL:"
                read email
                echo "TELEFONO:"
                read telefono
                echo "$nombre:$email:$telefono">>~/P15/amigos.txt

                echo "¿Quiere introducur otro AMIGO? s/n"
                read resp
    done

}

function introduce()
{
    if test -d ~/P15
    then
        echo "Existe la carpeta P15 en Home"  
        echo "Procede a introducir AMIGOS"
        echo ""
      
        if test -f ~/P15/amigos.txt
        then
            echo "El fichero amigos.txt ya existe"
            echo "    s - Si Sobre-Escribe perdera los datos anteriores"
            echo "    n - No Sobre-Escribe añadira nuevos AMIGOS"
            echo "¿Quiere Sobre-Escribir el fichero? s/n"
            read resp

            if test $resp = s
            then
                echo "Se va a Sobre-Escribir el fichero"
                                echo "Se perderán los datos anteriores"
                echo ""
                                echo "NOMBRE:EMAIL:TELEFONO">~/P15/amigos.txt
              
                mas_amigos
            else
                echo "Se van a Añadir nuevos AMIGOS"
                echo ""
              
                mas_amigos
            fi
        else
            echo "Se va a crear por primera vez el fichero amigos.txt"
            echo ""
                        echo "NOMBRE:EMAIL:TELEFONO">~/P15/amigos.txt
          
            mas_amigos
        fi
    else
        echo "La carpeta P15 no existe en Home"
        echo "Debe crearla primero"
        echo ""
        crea_carpeta
        echo "Ahora ya esta crada, vuelva a introducir la opcion [2] de MENU"
    fi
}

function copias()
{
    if test -d ~/P15/BACKUP
    then
        echo "La carpeta BACKUP ya existe"
        echo "Se van a Sobre-Escribir las COPIAS"
        rm ~/P15/BACKUP/amigos*.txt
        pausa
    else
        mkdir ~/P15/BACKUP
        echo "Se acaba de crear la carpeta BACKUP dentro de Home/P15"
        echo "Ahora se procede a realizarse la COPIAS"
        pausa
    fi
  
    if test -f ~/P15/amigos.txt
    then
        cp ~/P15/amigos.txt ~/P15/BACKUP/amigos-c.txt
        echo "Se ha realizado una copia de amigos.txt en la carpeta BACKUP"
        pausa
      
        ln -s ~/P15/amigos.txt ~/P15/BACKUP/amigos-s.txt
        echo "Se ha realizado un ENLACE SIMBOLICO de amigos.txt en la carpeta BACKUP"
        pausa
      
        ln ~/P15/amigos.txt ~/P15/BACKUP/amigos-d.txt
        echo "Se ha realizado un ENLACE DURO de amigos.txt en la carpeta BACKUP"
        pausa

        echo "VEAMOS TODAS LAS COPIAS EN BACKUP"
        ls -li ~/P15/BACKUP/
    else
        echo "El fichero amigos.txt no existe"
        echo "Debes crearlo primero con la opción [2] del MENU"
    fi
}

function fichero_vacio()
{
    >~/P15/BACKUP/vacio.txt
    echo "Se acaba de crear un fichero llamado vacio.txt en la carpeta BACKUP"
    pausa

    echo "Busqueda de ficheros de tamaño 0 en carpeta BACKUP:"
    find ~/P15/BACKUP/ -size 0b
}

function sevilla()
{  
    echo "Si ya existe el fichero sevilla.txt"
    echo "Se Sobre-Escribira el nuevo contenido"
    sed -n 1p ~/P15/amigos.txt>~/P15/sevilla.txt
    busqueda=`cut -d ":" -f3 ~/P15/amigos.txt|egrep "^955"`
  
    for linea in $busqueda
    do
        sed -n -e '/'$linea'/p' ~/P15/amigos.txt>>~/P15/sevilla.txt  
    done
  
    echo ""
    echo "Contenido del fichero sevilla.txt"
    cat ~/P15/sevilla.txt
}

function ciudad()
{
    echo "¿De que ciudad quieres ver tús Amigos?"
    read ciudad
  
    case $ciudad in
        sevilla|Sevilla|SEVILLA)    resp=955;;
        badajoz|Badajoz|BADAJOZ)    resp=924;;
        cadiz|Cadiz|CADIZ)        resp=956;;
        *)    echo "Esa ciudad no es una opción valida";;
    esac
  
    busqueda=`sed -e 1d ~/P15/amigos.txt|cut -d ":" -f3|egrep "^$resp"`
  
    echo ""
    echo "Los amigos de la provincia de $ciudad es/son:"
    for linea in $busqueda
    do
        sed -n -e '/'$linea'/p' ~/P15/amigos.txt
    done  
}

function numero()
{
    num=`wc -l ~/P15/amigos.txt`  

    busq1=`sed -e 1d ~/P15/amigos.txt|cut -d ":" -f3|egrep "^955"`
    busq2=`sed -e 1d ~/P15/amigos.txt|cut -d ":" -f3|egrep "^956"`
    busq3=`sed -e 1d ~/P15/amigos.txt|cut -d ":" -f3|egrep "^924"`
  
    sevilla=0
        cadiz=0
        badajoz=0

    for contador in $num
    do
        for linea in $busq1
        do
            sevilla=`expr $sevilla + 1`
        done
        for linea in $busq2
                do
                        cadiz=`expr $cadiz + 1`
                done
        for linea in $busq3
                do
                        badajoz=`expr $badajoz + 1`
                done
    done
  
    echo "Amigos de la Provincia de Sevilla = $sevilla"
    echo "Amigos de la Provincia de Cadiz = $cadiz"
    echo "Amigos de la Provincia de Badajoz = $badajoz"
}

function busca()
{
    echo "Dime el nombre del AMIGO a buscar:"
    read amigo
  
    busqueda=`cut -d ":" -f1 ~/P15/amigos.txt|egrep $amigo`
    #echo "busqueda= $busqueda"

    echo ""
    echo "El resultado de tú busqueda es:"
    if test -n "$busqueda"
    then
        #echo "entra"
        result=`sed -n -e '/'$busqueda'/p' ~/P15/amigos.txt`
        echo "- $result"

        echo ""
        echo "- ¿Quieres borrar a este AMIGO? s/n"      
            read contes

        if test $contes = s
            then
                    for linea in $busqueda
                       do
                #echo "entra en for"
                               sed '/'$result'/d' ~/P15/amigos.txt > ~/P15/tmp
                       done

                    echo ""
                       echo "- Resultado del fichero amigos.txt modificado"
                       cat ~/P15/tmp > ~/P15/amigos.txt
            rm ~/P15/tmp
            cat ~/P15/amigos.txt
            else
                       echo ""
                       echo "- El fichero amigos.txt no se ha modificado"
             fi
    else
        echo "- El AMIGO buscado no existe en este fichero"
    fi
}


##### FIN DE FUNCIONES #####

opcion=0
while test $opcion -ne 9
do
    menu
    case $opcion in
        1)    echo "1. Crea Carpeta P15 en Home"
            crea_carpeta
            echo ""
            pausa;;

        2)    echo "2. Introdue AMIGOS"
            introduce
            echo ""
            pausa;;

        3)    echo "3.Copias en BACKUP"
            copias
            echo ""
            pausa;;

        4)    echo "4. Crea fichero vacio en BACKUP"
            fichero_vacio
            echo ""
            pausa;;

        5)    echo "5. AMIGOS en Sevilla"
            sevilla
            echo ""
            pausa;;

        6)    echo "6. AMIGOS en la ciudad ..."
            ciudad
            echo ""
            pausa;;

        7)    echo "7. Nº de AMIGOS de cada ciudad"
            numero
            echo ""
            pausa;;

        8)    echo "8. Busca AMIGO y di su Telefono"
            busca
            echo ""
            pausa;;
  
        9)    echo "__________________________________________"
            echo "|                                         |"
            echo "|  HAS SALIDO CORRECTAMENTE DEL PROGRAMA  |"
            echo "|_________________________________________|"
            echo ""
            pausa;;

        *)    echo "ERROR"
            echo "Opción Incorrecta. Prueba de Nuevo"
            echo ""
            pausa;;
    esac
done