Está en la página 1de 14

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 paginándolo

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 líneas donde se encuentra esta palabra

Para utilizar número utilizamos:

-eq =
- ¡=
me
-lt < 

-gt > 

-le <=

-ge >=

Para utilizar ficheros:

-a Si existe
-d Existe es un
directorio
-f Existe es un fichero

-r Es de lectura

-w Es de escritura
-x Es ejecutable

Para dar permiso de ejecución utilizamos el comando CHMOD


Ejemplo

Chmod u +x expresión-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 lógicas

If  [Expresion]; Then


Realiza expresión si es verdadera
FI   Cierra la estructura

If [Expresion]; Then
    Realiza expresión si es verdadera
Else
    Realiza expresión si es falsa
FI
-n  utilizamos para variables si no es nula
-z  Utilizamos para variables nulo, vacia o no definida

Cuando hay más de dos opciones utilizamos  ELIF

If  [Expresion]; Then


Realiza expresión si es verdadera
elif  [Expresion]; Then
Realiza expresión si es verdadera
elif  [Expresion]; Then
    Realiza expresión si es verdadera
Else
    Realiza expresión si es falsa
FI

PROGRAMAS A REALIZAR
-------------------------------------------------------
#!/bin/bash
#primer programa
Echo Hola mundo

Guardamos con extensión .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 parámetros
Echo Hola $1, tienes $2 años

Guardamos como parámetros.sh


Desde terminal ejecutamos
Bash parámetros.sh Jhon 35

-------------------------------------------------------------
Fichero que solicita nombre y edad por pantalla
#!bin/bash
#Muestra nombre y apellidos por parámetros
Echo “Introduzca su nombre”
Read nombre
Echo “introduzca su edad”
Read edad

Echo “Hola eres” $nombre “ y tienes” $edad “años”

Guardamos como introduce-parametros.sh


Desde terminal ejecutamos
Bash inbtroduce-parámetros.sh Jhon 35

Aquí el introduzca su nombre hace un salto de línea para introducir el nombre, si queremos que se
haga en la misma línea ponemos   -n

Echo –n: Nos deja poner el nombre y la edad en la misma linea

-------------------------------------------------------------
#!bin/bash
#Muestra nombre y apellidos por parámetros
Echo  -n “Introduzca su nombre: ”
Read nombre
Echo -n  “introduzca su edad: ”
Read edad

Echo “Hola eres” $nombre “ y tienes” $edad “años”

READ –P:  nos muestra todo con una sola línea 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 “años”

Introducimos nombre y año de nacimiento, que muestre el nombre y la edad.

-------------------------------------------------------------
#!bin/bash
#Muestra nombre y apellidos por parámetros
Actual=2011

Echo Te llamas $1 y tienes $(expr $actual - $2) años.

Ejecutamos parametros1.sh jhon 1976

-------------------------------------------------------------
#!bin/bash
#Pasando por parámetro, 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 parámetros.sh


Ejecutamos bash parámetros.sh

----------------------------------------------------------------
Creamos script  con parámetros
#!/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 parámetros1.sh


Ejecutamos bash parámetros1.sh jhon

-----------------------------------------------------------------
#!/bind/bash
#programa que compara el año de nacimiento

Anho=1976
Read  –p “introduce tu naño de nacimiento:  “ anio

If [ $anio -eq $anho ]; then


Echo “Hola, naciste ” $anho
Else
Echo “Hola, Tu no naciste ” $anho
fi

Guardamos como parámetros2.sh


Ejecutamos bash parámetros2.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.Multiplicación"
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
---------------------------

También podría gustarte