#!/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