Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROGRAMACIN EN SHELL
SUMARIO
Cabe hacer algunas observaciones, si queremos utilizar otro tipo de shell para que
interprete los comandos, debemos colocar como primera lnea en el archivo de texto
el nombre del shell; por ejemplo si nuestros comandos sern interpretados por el
shell ksh, entonces colocamos como primera lnea: #!/bin/ksh
Vamos a crear un fichero al que llamaremos script.sh. Para ello, abrimos nano, gedit o
cualquier otro editor de texto y escribimos:
#!/bin/sh
echo Este es mi primer script en bash!
PROGRAMACIN EN SHELL
Podemos ejecutarlo haciendo una llamada al shell y pasando como
parmetro el nombre del script:
$ sh script.sh
Si observamos el cdigo fuente de nuestro pequeo script, veremos que consta de dos
lneas:
- En la primera se indica el shell que se va a usar como intrprete para este
script: #!/bin/sh. Esta siempre debe ser la primera lnea de un shell script.
# i vale 1
i=1
# I vale echo
I=echo
# msg vale Hola mundo!
msg="Hola mundo!"
PROGRAMACIN EN SHELL
Para acceder al contenido de una variable empleamos $ delante
de su identificador:
$identificador
Ejemplos:
$ i=1 ; echo $i
$ msg="Mola mundo!" ; echo $msg
$ fu=echo; $fu goo!
Ejemplo:
mkdir /home/alumnos/$idalumno > /dev/null ; echo $?
if [ $?=0 ]; then
echo "El directorio $idalumno se ha creado sin problemas"
fi
PROGRAMACIN EN SHELL
Control de flujo
Esto refiere al cauce o flujo normal de los programas. No siempre hay un
solo camino a seguir y estas proposiciones permiten que el programa realice distintas
tareas, segn las condiciones de las variables a interpretar.
"if"
El"if" es un proposicin de control que verifica si es verdadera o falsa una condicin.
Sintaxis:
if [ comando-condicin ]; then
Comandos si la condicin es verdadera
else
Comandos si la condicin es falsa
fi
PROGRAMACIN EN SHELL
Comparaciones de cadenas alfanumricas
Operador Verdad (TRUE) si:
cadena1 = cadena2 cadena1 es igual a cadena2
cadena1 != cadena2 cadena1 no es igual a cadena2
cadena1 < cadena2 cadena1 es menor que cadena2
cadena1 > cadena 2 cadena1 es mayor que cadena 2
-n cadena1 cadena1 no es igual al valor nulo (longitud mayorque 0)
-z cadena1 cadena1 tiene un valor nulo (longitud 0)
read numero
# comparamos cadenas de texto, as que usamos comillas
if [ $numero -eq 5 ]; then
echo Acert tu nmero. Es el 5.
fi
Sentencia case
Se utiliza cuando el valor de una variable ha de ser contrastado con varios valores. Su
sintaxis es la siguiente:
case variable in
patron1) comando1
comando2;;
patron2) comando3
comando4;;
....
....
esac
PROGRAMACIN EN SHELL
Ejemplo:
!/bin/bash
echo "[1] Listar archivos"
echo "[2] Ver directorio de trabajo"
echo "[3] Crear directorio
read -p "Ingrese una opcin: " OPCION
case $OPCION in
1) ls;;
2) pwd;;
3) read -p "Ingrese nombre del directorio a crear: " DIRECTORIO
mkdir $DIRECTORIO;;
*) echo "Opcin ingresada no valida, intentelo de nuevo"
exit 1;;
esac
PROGRAMACIN EN SHELL
Bucles
El shell nos aporta mecanismos para realizar tareas repetitivas mediante el empleo de
estructuras que permiten repetir un bloque de comandos.
El bucle for
Esta estructura permite repetir un bloque de comandos asignando valores de una serie a una
variable en cada iteracin.
for VARIABLE in SERIE; do
bloque de comandos
done
Ejemplos:
for i in 1 2 3 4 5; do
echo $i
done
# con cadenas de texto
for palabra in uno dos tres cuatro cinco; do
echo $palabra
done
PROGRAMACIN EN SHELL
El bucle while
Es otra estructura de bucle que permite ejecutar un bloque de comandos mientras se evale
una condicin a cierto:
while CONDICION; do
bloque de comandos
done
Ejemplos:
i=1
while [ $i -le 10 ]; do
echo $i
i=$(($i+1))
done
Exit. Este comando se utiliza en programacin de shell para terminar inmediatamente un script
y volver al shell original.
exit 6 termina el script devolviendo el nmero indicado, lo que puede usarse para determinar
condiciones de error.
exit 0 termina el script devolviendo 0, para indicar la finalizacin exitosa de tareas. Escribir
slo exit tambin devuelve cdigo de error 0.
PROGRAMACIN EN SHELL
Depuracin de shell scripts
El shell tambin tiene un modo para comprobar errores de sintaxis sin ejecutar el programa. Se
usa as:
sh -n tu_script.sh
La opcin -n del comando sh hace que no se ejecute ningn comando, solo chequea la sintaxis.
Si no retorna nada, entonces tu programa no tiene errores de sintaxis.
#!/bin/bash
function funcion1 {
echo "estamos en la 1 y le pasamos el parametro:"$1
}
function funcion2 {
echo "estamos en la 2 y le pasamos el parametro:"$1
}
# ahora a ejecutarlas!
funcion1 hola
funcion2 chau
PROGRAMACIN EN SHELL
PRACTICA:
1. Realizar un script que visualice un men con 4 opciones:
- buscar un archivo
- cambiar permisos a un fichero
- buscar una cadena en un archivo
- salir
2. Ejercicio 2: realizar un script que dado un nmero 'n' muestre los diez primeros
elementos de su tabla de multiplicar, mostrando el resultado en la forma: i x n =
resultado.