Consultas, desarrollo de programas y petición de presupuestos:

jueves, 12 de julio de 2012

Ejercicios de Script (I)

Ejemplo: Buscar en directorio
#!/bin/bash

if [[ $# != 1 ]] ; then
    echo "Debe indicar un directorio"
    exit 1
fi
if [[ -d $1 && -r $1 ]] ; then  # Si es un directorio y tengo permiso de lectura.   
#    find $1 -type f -name "*.c" | wc -l    con esto nos daría el resultado recursivamente de todos los directorios a partir de ese.
    ls -1 $1/*.c 2> /dev/null | wc -l    # Con esto sacamos los ficheros contenidos en el directorio y lo contamos con wc -l.
    else
    echo "$0: $1 no es un directorio o no se puede leer"
fi

exit 0


Ejemplo: Tipo de fichero
#!/bin/bash

if (( $# == 1 )) ; then
    directorio=$1
else
    directorio=$PWD
fi
if [[ ! -d $directorio ]] ; then
    echo "$0: Directorio no válido"
    exit 1
fi
# Asignamos al enter el separador de linea para no tener problemas con los nombres con espacios.
IFS="
"
for tipo in $(ls -1 $directorio) # Va asignando a tipo cada fichero o directorio que encuentra ls uno a uno
do
    if [[ ! -d $directorio/$tipo ]] ; then # Descartamos los directorios.
    file $directorio/$tipo
    fi
done

exit


Ejemplo: Tipo de fichero, pero dandole de argumento varios directorios

#!/bin/bash
#dado una lista de directorio que nos digan los tipo qe son
if (( $# == 0 )) ; then
    echo "no hay directorios de arguementos"
    exit 1
fi


for veces in $*
do

    directorio=$veces

    if [[ ! -d $directorio ]] ; then
        echo "$0: Directorio no válido"
        exit 1
    fi
    # Asignamos al enter el separador de linea para no tener problemas con los nombres con espacios.
    IFS="
"
    for tipo in $(ls -1 $directorio) # Va asignando a tipo cada fichero o directorio que encuentra ls uno a     uno
    do
        if [[ ! -d $directorio/$tipo ]] ; then # Descartamos los directorios.
        file $directorio/$tipo
        fi
    done


done
exit


Ejemplo: Menu de 3 opciones
#!/bin/bash

echo -e "----------MENU-----------\n"
echo "1.Sumar 2 números."
echo "2.Mostrar el contenido de un fichero."
echo -e "3.Mostrar el contenido de un directorio.\n"
echo -e "Elija opción...\c" #Se puede hacer con echo -n "Elija opcion..." para evitar el salto de línea.

read opcion

case $opcion in

1)     echo "Introduzca num1"
    read num1
    echo "Introduzca num2"
    read num2
    echo "El resultado es: $((num1+num2))"  #Se puede hacer ((resul= num1+num2)) y luego echo $resul o echo ((resul= num1+num2)) directamente.
    ;;
   
2)    echo "Escriba cual sera el fichero"
    read fichero
    cat $fichero
    ;;
   
3)    echo "Escriba el directorio"
    read directorio
    ls -1 $directorio
    ;;
   
*)     echo "Opción incorrecta"
    echo "$0: Opciones(1-3)"
esac

exit 0


Ejemplo 4: Menu con opcion de salida 0

#!/bin/bash

while [[ $opcion != 0 ]]
do

echo -e "----------MENU-----------\n"
echo "1.Sumar 2 números."
echo "2.Mostrar el contenido de un fichero."
echo -e "3.Mostrar el contenido de un directorio."
echo -e "0.Salir del programa.\n"
echo -e "Elija opción...\c" #Se puede hacer con echo -n "Elija opcion..." para evitar el salto de línea.

read opcion

case $opcion in

1)     echo "Introduzca num1"
    read num1
    echo "Introduzca num2"
    read num2
    echo "El resultado es: $((num1+num2))"  #Se puede hacer ((resul= num1+num2)) y luego echo $resul o echo ((resul= num1+num2)) directamente.

    ;;
  
2)    echo "Escriba cual sera el fichero"
    read fichero
    cat $fichero

    ;;
  
3)    echo "Escriba el directorio"
    read directorio
    ls -1 $directorio

    ;;

0)   echo "saliendo"
   
opcion=0
     ;;
 
*)     echo "Opción incorrecta"
    echo "$0: Opciones(1-3)"

esac
done

exit 0



Ejercicio:
Pedir numero por teclado, hasta que se introduzca el 0, y llevar la cuenta de sus sumas y sus productos.


#!/bin/bash
n=1
producto=1
while [[ ($n != 0) ]]
do
echo "Introduce un numero:"
read n
(( c = c + 1 ))
(( suma = suma +n ))
if (( n !=0 ))
then
(( producto = producto * n ))
fi
done
# descontar 1 para que no cuente el 0
(( c = $c - 1 ))

echo "Numeros introducidos: $c"
echo "Total suma: $suma"
echo "Total producto: $producto"

No hay comentarios:

Publicar un comentario