Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCION
IST ABACO
CONDICIONALES: IF - THEN
- Tambien conocido como constructor condicional (if)
- Debemos tener presente que el principal objetivo de un shell es el de
ejecutar rdenes, por tanto, cuando se diseo el constructor if se
plante tomar como expresin lgica la propia ejecucin de un
programa.
- En este caso se considera como cierto el hecho que un programa
termine sin errores y como falso que se produzca algn error en la
ejecucin del mismo.
NOTA: El cdigo de retorno de los procesos es un entero de 8 bits.
Cuando este entero es cero se considera que la ejecucin no ha
encontrado ningn error. El valor de salida de la ltima lnea de rdenes
ejecutada se puede acceder en la variable $?
IST ABACO
SINTAXIS IF-THEN
if orden
then
Ordenes a Ejecutar
else
Ordenes a Ejecutar
fi
IST ABACO
SINTAXIS IF-THEN
Ejemplo 1:
if cp /root/bin/fichero.txt
then
/opt/clase10.txt
else
echo Error en la copia
fi
IST ABACO
SINTAXIS IF-THEN
Ejemplo 2:
passwd=abaco
echo Ingresa la contrasena super-secreta:
read PASSWORD
if [$PASSWORD == $passwd ];
then
echo Tu clave es correcta :)
else
echo INTRUSO, Acceso DENEGADO
fi
IST ABACO
SINTAXIS IF-THEN
Recordar:
- Que el espacio es muy importante en la instruccin if.
- Siempre que uses IF-THEN tendrs que utilizar la sentencia fi
para poner fin a un caso de uso.
- Tambin puede reemplazar el "==" con "! =" Para probar si las
variables no son iguales.
- Hay otras seales que puedes usar en lugar de "==" para otros
tipos de comparaciones. La siguiente tabla muestra las
diferentes expresiones permitidas.
IST ABACO
SINTAXIS IF-THEN
COMPARACIONES
IST ABACO
-eq
IGUAL a
-ne
No es IGUAL a
-lt
MENOS que
-le
-gt
MAS que
-ge
SINTAXIS IF-THEN
COMPARACIONES
IST ABACO
-s
-f
-d
EL DIRECTORIO EXISTE
-x
El ARCHIVO es EJECUTABLE
-w
EL ARCHIVO es LEIBLE
-r
EL ARCHIVO es ESCRIBIBLE
SINTAXIS IF-THEN
Ejemplo 3:
dir=/root/bin
then
EDAD=`cat $dir/${username}.txt`
echo "Tu EDAD es: $EDAD"
else
echo "No se encontro edad para el usuario :( "
fi
IST ABACO
SINTAXIS IF-THEN
Ejemplo 4:
echo "Ingresa tu Edad:"
read edad
then
echo "Tienes 20s..."
[ "$edad" -ge 30 ] && [ "edad" -lt 40 ];
elif
then
fi
IST ABACO
done
IST ABACO
SINTAXIS WHILE
EJEMPLO5:
i=0;
done
IST ABACO
else
echo "Respuesta equivocada"
fi
done
IST ABACO
SINTAXIS WHILE
EJEMPLO7:
contador=0
while :
do
sleep 1
contador=`expr $COUNTER + 1`
echo "El programa se ejecutara en $contador seg..."
done
IST ABACO
SINTAXIS FOR
IST ABACO
expregn
SINTAXIS FOR
EJEMPLO 8
for i in `seq 1 5`
do
echo $i
done
IST ABACO
SINTAXIS FOR
EJEMPLO 9
#!/bin/bash
for i in /opt/ejemplos/prueba/*.txt; do
ls -la /opt/ejemplos/prueba/*.txt > /opt/ejemplos/prueba/resultado.txt
done
IST ABACO
SINTAXIS CASE
Es una estructura parecida a la de Pascal, cuando entra en la estructura,
sale cuando empiece la siguiente etiqueta (no as en C, en el que las
etiquetas del case actan como etiquetas de un JMP en ensamblador:
una vez que entran en una etiqueta, no salen del case hasta que ste
acaba completamente).
Las etiquetas pueden ser cualquier ``expresin regular'' (expresin con
comodines tpica de los intrpretes de rdenes; no las expresiones
regulares del vi, el grep, el perl y otros) vlida, con lo que se puede poner
un * como ltima etiqueta del case para actuar como else. Para indicar
que termina el cdigo de una etiqueta determinada, hay que poner al final
de la ltima orden dos signos de punto y coma seguidos.
IST ABACO
SINTAXIS CASE
case valor
in
expreg1)
...
ultimaorden1;;
expreg2)
...
ultimaorden2;;
...
expregn)
...
ultimaordenn;;
esac
IST ABACO
SINTAXIS CASE
EJEMPLO 10:
IST ABACO
SINTAXIS CASE
EJEMPLO 11:
HOY=$(date +%w)
AYER=$[$HOY -1]
echo "ayer fue:"
case $AYER in
-1) echo "sabado";;
0) echo "domingo";;
1) echo "lunes";;
2) echo "martes";;
3) echo "miercoles";;
4) echo "jueves";;
5) echo "viernes";;
*) echo "ERROR: $AYER no existe";;
esac
IST ABACO
FUNCIONES
IST ABACO
FUNCIONES
SINTAXIS
nombredelafuncion()
{
# dentro del cuerpo $1 es el primer argumento dado a la funcin
# $2 el segundo ...
cuerpo
}
IST ABACO
let A=100
let B=200
EJEMPLO
}
# Funcion resta() Resta los variables A y B
function resta(){
let C=$A-$B
echo "Resta: $C"
}
suma
resta
IST ABACO