Você está na página 1de 12

Scripts BASH ejercicios

Ejercicios de Scripts

A tener en cuenta:

LESS (nombre fichero):


Nos muestra el contenido de un fichero en su totalidad
MORE (nombre fichero):
Nos muestra el contenido del fichero paginndolo
Para salir de estos comandos WQ
Less (fichero) | head n 5 nos muestra las primeras 5 lineas
Less (fichero)| tail n 5 nos muestra las ultimas 5 lineas
Less (fichero) |grep (palabra) muestra las lneas donde se encuentra esta palabra

Para utilizar nmero utilizamos:

-eq
-me
-lt

=
=
<

-gt

>

-le

<=

-ge

>=

Para utilizar ficheros:

-a

Si existe

-d
-f

Existe es un
directorio
Existe es un fichero

-r

Es de lectura

-w

Es de escritura

-x

Es ejecutable

Para dar permiso de ejecucin utilizamos el comando CHMOD


Ejemplo
Chmod u +x expresin-logica.sh
U= permiso a usuario
+= agregar
X= ejecutable
As podemos ejecutar el fichero sin utilizar el bash inicial.

CASE se suele utilizar para menus cuando hay varias opciones.


Sintaxis:
Case $variable in
Valor1)
Se ejecuta si variable tiene valor 1
;;
Valor2)
Se ejecuta si variable tiene valor 2
;;
*)Se ejecuta su variable no tiene ninguno de los valores anteriores
ESAC

Expresiones lgicas
If [Expresion]; Then
Realiza expresin si es verdadera
FI Cierra la estructura
If [Expresion]; Then
Realiza expresin si es verdadera
Else
Realiza expresin si es falsa
FI
-n utilizamos para variables si no es nula
-z Utilizamos para variables nulo, vacia o no definida
Cuando hay ms de dos opciones utilizamos ELIF
If [Expresion]; Then
Realiza expresin si es verdadera
elif [Expresion]; Then
Realiza expresin si es verdadera
elif [Expresion]; Then

Realiza expresin si es verdadera


Else
Realiza expresin si es falsa
FI

------------------------------------------------------#!/bin/bash
#primer programa
Echo Hola mundo
Guardamos con extensin .SH

- primer-programa.sh

Nos vamos al terminal y ejecutamos


bash primer-programa.sh
-----------------------------------------------------------#!/bin/bash
#Movimiento de fichero de una ruta a otra
Mv /home/asir/ASO/TEMA1/ejercicios/tema1 /home/asir/SRI/TEMA1/DHCP/ejercicios
Echo Contenido de la carpeta ASO/TEMA1/ejercicios/
Ls /home/asir/ASO/TEMA1/ejercicios/tema1
Echo Contenido de la carpeta destino /SRI/TEMA1/DHCP/ejercicios
Ls /home/asir/SRI/TEMA1/DHCP/ejercicios
Guardamos como movimiento-fichero.sh
Ejecutamos.
-----------------------------------------------------------#!bin/bash
#Muestra nombre y apellidos por parmetros
Echo Hola $1, tienes $2 aos
Guardamos como parmetros.sh
Desde terminal ejecutamos
Bash parmetros.sh Jhon 35
------------------------------------------------------------Fichero que solicita nombre y edad por pantalla
#!bin/bash
#Muestra nombre y apellidos por parmetros
Echo Introduzca su nombre
Read nombre
Echo introduzca su edad
Read edad
Echo Hola eres $nombre y tienes $edad aos

Guardamos como introduce-parametros.sh


Desde terminal ejecutamos
Bash inbtroduce-parmetros.sh Jhon 35
Aqu el introduzca su nombre hace un salto de lnea para introducir el nombre, si queremos que
se haga en la misma lnea ponemos -n
Echo n: Nos deja poner el nombre y la edad en la misma linea
------------------------------------------------------------#!bin/bash
#Muestra nombre y apellidos por parmetros
Echo -n Introduzca su nombre:
Read nombre
Echo -n introduzca su edad:
Read edad
Echo Hola eres $nombre y tienes $edad aos
READ P: nos muestra todo con una sola lnea de comando eliminamos el echo
------------------------------------------------------------#!bin/bash
#Muestra nombre y apellidos por variable
read p Introduzca su nombre: nombre
read -p introduzca su edad: edad
Echo Hola eres $nombre y tienes $edad aos
Introducimos nombre y ao de nacimiento, que muestre el nombre y la edad.
------------------------------------------------------------#!bin/bash
#Muestra nombre y apellidos por parmetros
Actual=2011
Echo Te llamas $1 y tienes $(expr $actual - $2) aos.
Ejecutamos parametros1.sh jhon 1976
------------------------------------------------------------#!bin/bash
#Pasando por parmetro, especificamos fichero y donde moverlo
Echo Movemos el fichero $1 a la carpeta $2
Mv $1 $2
Echo nos muestra el contenido del fichero
Ls $2
--------------------------------------------------------------#!/bind/bash
#programa que compara el nombre y nos da mensaje si somo o no

Name=jhon
Echo n introduce tu nombre:
Read nombre
If [ $nombre = $name ]; then
Echo Hola, eres $nombre
Else
Echo Hola, Tu no eres $name
fi
guardamos como parmetros.sh
Ejecutamos bash parmetros.sh
---------------------------------------------------------------Creamos script con parmetros
#!/bind/bash
#programa que compara el nombre y nos da mensaje si somo o no
Name=jhon
If [ $1 = $name ]; then
Echo Hola, eres $1 buenos dias
Else
Echo Hola, Tu no eres $name
fi
guardamos como parmetros1.sh
Ejecutamos bash parmetros1.sh jhon
----------------------------------------------------------------#!/bind/bash
#programa que compara el ao de nacimiento
Anho=1976
Read p introduce tu nao de nacimiento: anio
If [ $anio -eq $anho ]; then
Echo Hola, naciste $anho
Else
Echo Hola, Tu no naciste $anho
fi
Guardamos como parmetros2.sh
Ejecutamos bash parmetros2.sh
---------------------------------------------------------#!/bind/bash
#pasados 2 valores por parametro, indique cual de lo dos es mayor o si son iguales
read -p "introduce un valor: " num1

read -p "Introduce valor a comparar: " num2


if [ $num1 -lt $num2 ]; then
echo $num2 " Es mayor que " $num1
elif [ $num1 -eq $num2 ]; then
echo $num1 " Es igual a " $num2
else
echo $num2 " Es menor que " $num1
fi
-------------------------------------------------------#!/bind/bash
#Mirar si el directorio pasado por parametro ya existe si es si, que muestre un mensaje. Si es
no lo debe crear y decir que lo ha creado
read -p "introduce un directorio: " dir1
if [ -a $dir1 ]; then
echo " El directorio existe "
ls
else
echo "El directorio no existe"
mkdir $dir1
echo "Se ha creado el directorio " $dir1
ls
fi
----------------------------------------------------#!/bind/bash
#Nos pide la edad y nos dice si es mayor de edad o menor
read -p "introduce tu edad: " edad
if [ $edad -lt 18 ]; then
echo " Eres menor de edad "
elif [ $edad -gt 18 ]; then
echo "Eres mayor de edad"
else
echo "Eres mayor de edad"
fi
----------------------------------------------------------#!/bind/bash
#Script que mire si el fichero por parametro, existe. si existe mostrar mensaje con el nombre del
fichero. Si no existe crearlo y decir que lo ha creado con el nombre quese ha puesto.
if [ -a $1 ]; then
echo "El fichero existe se llama "$1

else
touch $1
echo "Se ha creado el fichero con el nombre "$1
fi
---------------------------------------------------------#!/bind/bash
#Script que mire si el fichero pedido, existe. si existe mostrar mensaje con el nombre del
fichero. Si no existe crearlo y decir que lo ha creado con el nombre quese ha puesto.
read -p "Introduzca ruta del fichero: " f1
if [ -a $f1 ]; then
echo "El fichero existe se llama "$f1
else
touch $f1
echo "Se ha creado el fichero con el nombre "$f1
fi
---------------------------------------------------------#!/bind/bash
#Script que reciba un nombre de fichero, verifique que existe y que es un fichero comun
(lectura-escritura) lo convierta en ejecutable para el usuario y el grupo y muestre el estado final
de los permisos.
if [ -f $1 ]; then
echo "El parametro introducido es un fichero"
ls -l $1
if [ -r $1 ];then
echo " Tiene permisos de Lectura"
if [ -w $1 ];then
echo "Tiene permisos de escritura "
chmod ug+x $1
ls -l $1
else
echo "No es un fichero comun"
fi
else
echo "No es un fichero comun"
fi
else
echo "El fichero no existe "
fi

-----------------------------------------------------------#!/bind/bash
#Script que reciba un nombre de fichero, verifique que existe y que es un fichero comun
(lectura-escritura) lo convierta en ejecutable para el usuario y el grupo y muestre el estado final
de los permisos.
if [ -f $1 ]; then
echo "El parametro introducido es un fichero"
more $1
elif [ -d $1 ]; then
cd $1
ls
else
echo " ERROR!!! no es fichero ni directorio "
fi
-----------------------------------------------------------#/!bin/bash
#Script que nos muestra un menu para elegir una opcion, y nos da un mensaje despues de la
eleccion.

echo "1. Opcion uno"


echo "2. Opcion dos"

read -p "introduzca opcion:" op

case $op in
1)
echo "Ha pulsado opcion 1"
;;
2)
echo "Ha pulsado opcion 2"
;;
*)
echo "La opcion es incorrecta"
;;
esac
--------------------------------------------------------#/!bin/bash
#Script que nos muestra un menu para elegir la operacion a realizar

echo ""

echo "Realiza una operacion matematica segun las opciones"


echo ""
echo "a.Suma"
echo "b.Resta"
echo "c.Multiplicacin"
echo "d.Division entera"
echo "e.Resto"
echo "f.Es un numero par?"

read -p "Seleccione la operacion a realizar y pulse intro: " op


read -p "introduzca operando 1:" num1
if [ $op != f ]; then
read -p "introduzca operando 2:" num2
fi

case $op in
a)
suma=`expr $num1 + $num2`
echo "Ha pulsado opcion a, el resultado de la suma es "$suma
;;

b)
resta=`expr $num1 - $num2`
echo "Ha pulsado opcion b, el resultado de la resta es "$resta
;;

c)
multiplicacion=`expr $num1 \* $num2`
echo "Ha pulsado opcion c, el resultado de la multiplicacion es "$multiplicacion
;;

d)
division=`expr $num1 / $num2`
echo "Ha pulsado opcion d, el resultado de la division es "$division
;;

e)
resto=`expr $num1 % $num2`
echo "Ha pulsado opcion e, el resto es "$resto
;;

f)
res=`expr $num1 % 2`
if [ $res -eq 0 ]; then

echo " el numero introducido es " $num1 " es par"


else
echo " el numero introducido es " $num1 " No es par"
fi
;;
esac
--------------------------------------------------#/!bin/bash
#Script que nos diga al pulsar una tecla, si es letra, numero o caracter especial

read -n 1 tecla
case $tecla in
[a-z,A-Z]) echo "ha introducido una letra"
;;
[0-9]) echo "Ha introducido un numero"
;;
*) echo "Ha introducido un caracter especial"
;;
esac
-----------------------------------------------------#!/bin/bash
#realizar un scrip que reciba varios parametros y nos diga cuantos de esos parametros son de
directorios y cuantos son archivos. $# contador que indica cuantos parametros se pasan.
cont=0
contf=0
for var in $*; do
if [ -d $var ]; then
cont=`expr $cont + 1`
elif [ -f $var ]; then
contf=`expr $contf + 1`
else
echo "$var no es fichero ni directorio"
fi
done
echo "Ha introducido $cont directorios y $contf ficheros."
echo "Se han introducido $# parametros"
---------------------# Mostramos menu, con productos para vender, luego nos pide que introduzcamos la opcion.
luego mensaje que indica que introduzca moneda. Si ponemos precio exacto nos da mensaje,
"Gracias buen provecho", si ponemos menos, nos diga falta.
Si poner mas valor, nos indique el cambio con mensaje.
echo """"
echo "Bienvenido a la tienda On-line - CEPAL"

echo ""
echo "1. Refresco 1 euro"
echo "2. Sandiwch 3 euros"
echo "3. Tabaco 5 euros"
echo ""
read -p "Introduzca opcion:" op
read -p " Introduzca importe: " mon
case $op in
1)
precio=1
;;
2)
precio=3
;;
3)
precio=5
;;
*)
echo "Opcion incorrecta"
esac
while [ $mon -lt $precio ]; do
falta=`expr $precio - $mon`
read -p " Introduzca $falta euros, por favor introduzcalos" mas
mon=`expr $mon + $mas`
done
if [ $mon -gt $precio ]; then
cambio=`expr $mon - $precio`
echo "Gracias por su compra, su cambio es de $cambio euros"
else
echo "Gracias por su compra. Buen provecho"
fi
--------------#!/bin/bash
#Realizar un script que pida introducir la ruta de un directorio por teclado (Hay que validar que
la variable introducida sea un directorio) nos diga cuantos archivos y cuantos directorios hay
dentro de ese directorio.

read -p "Introduzca la ruta de un directorio :" dir


until [ -d $dir ]; do
read -p "Introduzca la ruta de un directorio :" dir
done
cont=0
contf=0
for var in `ls $dir`; do
if [ -d $var ]; then
cont=`expr $cont + 1`
elif [ -f $var ]; then
contf=`expr $contf + 1`
fi
done

echo "Ha introducido $cont directorios y $contf ficheros."


echo "Se han introducido $# parametros"

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

#/!bin/bash
#Realiza un script que introduzca numero por parametro y muestre tabla de multiplicar
echo " la tabla de multiplicar de $1 es: "
numerador=1
while [ $numerador -lt 11 ]; do
resul=`expr $1 \* $numerador`
echo "$1 x $numerador = $resul"
numerador=`expr $numerador + 1`
done

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

#!/bind/bash
#apertura carpeta contenido ASIR
ls /home/asir

-----------------------#/!bin/bash
#Realiza un script que muestre por pantalla los numeros del 1 al 20
num=1
while [ $num -lt 21 ]; do
echo "$num"
num=`expr $num + 1`
done
---------------------------

Você também pode gostar