Está en la página 1de 6

Día 19.

09

scripts en shell
================

#!usr/bin/env bash o #!/bin/bash

Comentarios de una linea #


Comentarios multilìnea <<COMMENT .........COMMENT

echo Muestra mensajes o el contenido de las variables por pantalla

echo Hola mundo

nombre=Susana
echo Mi nombre es ${nombre}

-n elimina el retorno de carro que lleva implicito el comando echo


-e permite introducir códigos especiales en el mensaje a mostrar

\t tabulador
\n retorno de carro
\E[31m color rojo

read Permite leer información desde el teclado

read edad

Estructuras de control
======================

- Condicionales: ejecutan una seriae de sentencias después de comprobar una


determinada condición
- if
- case (conjunctos de ifs)
- Repetitivas o Bucles: ejecutan un serie de sentencias cierto número de veces,
en función de una determinada condición
- determinados: se sabe cuantas veces se van a repetir las sentencias
- for
- Indeterminados: no se sabe cuantas veces se van a repetir las sentencias
- while (es un bucle)
- until (es un bucle)

Condiciones
-----------

Operadores aritméticos
......................
+ suma
- resta
* producto
/ division
% resto de la division entera (o módulo)

Operadores relacionales o de comparación


........................................
Para cadenas:
= igual cadena1=cadena2
!= distinto cadena1!=cadena2
Para números:
-eq igual (equal)
-ne distinto (not equal)
-gt mayor que (greather than)
-ge mayor o igual (greather or equal)
-lt menor que (less than)
-le menor o igual (less or equal)

x=3 y=7
${x} -eq ${y}

Operadores lógicos
..................
Permiten crear condiciones compuestas

-a AND Y Para que un conjunto de condiciones unidas por el operador -a,


devolverá Verdadero si TODAS
las condiciones que forman parte del conjunto son VERDADERAS.

edad=16
dinero=97

si (edad es mayor o igual a 18) Y (dinero es mayor o igual a 30) -->> PUEDES
ENTRAR

-o OR O Para que un conjunto de condiciones unidas por el operador -o, devuelva


VERDADERO, basta con
UNA de todas las condiciones del conjunto sea verdadera.

plato1="macarrones con queso"


plato2="bacalao con tomate"
plato3="lentejas estofadas"

si (plato1="macarrones con queso") O (plato2="huevos rotos) -->> comando

! NOT no Negación de la condición

Operadores Unarios
..................
Estos operadores trabajan sobre los ficheros y devuelven verdadero si cumple la
condicion

-f nom_fichero Devuelve verdadero si existe el fichero y es normal


-r nom_fichero Devuelve verdadero si existe y tiene permiso de lectura
-w nom_fichero Devuelve verdadero si existe y tiene permiso de escritura
-x nom_fichero Devuelve verdadero si existe y tiene permiso de ejecución
-d nom_fichero Devuelve verdadero si existe y es un directorio permiso de
ejecución
-c nom_fichero Devuelve verdadero si existe y es un dispositivo de tipo carácter
-b nom_fichero Devuelve verdadero si existe y es un dispositivo de tipo bloque
-l nom_fichero Devuelve verdadero si existe y es un enlace

si -f uno.txt

Para crear las condiciones usaremos uno de los siguientes métodos:

test condicion test -f uno.txt


[ condicion ] [ -f uno.txt ]

SENTENCIA IF
============
Esta sentencia provoca una bifurcación en nuestro scripts, en función del
resultado de la evaluación de una condición

if condicion
then
sentencias_verdadero
fi

if condicion
then
sentencias_verdadero
else
sentencias_falso
fi

IF Anidado:

if condicion1
then
if condicion2
then
sentencias_verdadero
else
sentencias_falso
else
sentencias_falso
fi

if condicion1
then
sentencias_verdadero
elif condicion2 (else if = elif)
then
sentencias_verdadero
else
sentencias_falso

Día 21.09

case
Sentencia condicional. Sustituye a los if anidados
Esta sentencia comprueba si la variable indicada coincide con alguno de los
patrones definidos y ejecuta las sentencias asociadas a dicho patrón.
El patrón admite caracteres comodin (*?[]) y el operador (|)
El bloquede sentencias asociado a cada patrón debe terminar con ;; para evitar
que ejecute el resto de las sentencias definidas en la estructura case
El patrón * representa a cualquier valor y se situa como ultimo patrón de case
Esta sentencia terminas com esac

Sintaxis
case $variable in
patron1) sentencias;;
patron2) sentencias;;
.....
*) sentencias
esac

Comodines o metacaracteres

? 1 cas? casa
case
cast
cas1
* 0-N cas* cas
casa
caseta
cas.....

ESTRUCTURAS REPETITIVAS O BUCLES


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

Repiten las sentencias indicadas un número de veces

- Determinadas
Sabemos el número de veces qu se van a ejecutar las sentencias

for variable in lista


do
sentencias
done

$* muestra la lista de parametros escritos detras delnombre de un comando o


programa shell
$# muestra el número de paramero escritos de tras del nombre de un comando o
programa shell

#código contador
for ((variable=valor_inicial;condicion;incremento))
do
sentencias
done

- Indeterminadas
No sabemos el nbúmero de veces que se van a ejecutar las sentencias

while condition
do
sentencias
done

El bucle while ejecuta las sentencias indicadas MIENTRAS la condicion sea


verdadera

En este bucle, debemos:


1. Iniciar la conicion antes de entrar al bucle
2.Modificar la condicion durante la ejecucion del bucle que podemos salir de él
until condicion
do

---

for ((variable=valor_inicial;condicion;incremento))
for((i=0;i<=10;i++))
do
sentencias
done

#inicializamos la variable que interviene en la condicion


i=0
while [ $i -le 10]
do
#ejecutamos las sentencias
#modificamos el valor de la variable para poder salir del bucle
echo "Buenos días"
let i=$i+1
# i=`expr

También podría gustarte