Tema 4 - SHELL SCRIPT
1. ¿Que es shell script?
Es un archivo de texto que puede crearse con cualquier editor de texto. Contiene un conjunto de comandos que se ejecutan de forma secuencial (linea a linea).
El shell actua a la vez como interprete de comandos y lenguaje de programacion, lo que permite automatizar tareas
Toma de contacto:
Shebang (!#): La primera linea de cualquier script definde el interprete de comandos a usar, comunmente
!#/bin/bash.Comandos: Un ejemplo basico es
echo, que muestra texto en pantalla.
Ejemplo: Hola_mundo
2. Conceptos basicos: Variables y parametros
2.1 Variables
Son espacios de memoria que almacenan cadenas de caracteres, no necesitan ser declaradas ni tienen un tipo definido.
Creacion: Se asignan con la sintaxis
nombre_variable=valor, sin espacios antes o despues del=Lectura: Para leer o usar el contenido de una variable se usa el simbolo $, ejemplo (
echo $Nombre)Hay varios tipos, como:
Locales: Se usan solo en el script en el que se crearon
De entorno: Pueden ser utilizadas por todos los shell
Ejemplo: Variables
2.2 Paso de parametros
Los scripts pueden recibir parametros desde la linea de comandos, se accede a ellos con variables especiales:
$0: Nombre del script o programa$1,$2,$3…: Primer, segundo, tercer parametro, etc..$#: Indica el numero de parametros recibidos$*: Muestra todos los parametros como una sola cadena$?: Devuelve el codigo de salida del ultimo comando ejecutado. Si tuvo existo es 0.
Ejemplo: Parametros
Otras expansiones:
Ejecucion de comandos: Se puede asignar el resultado de un comando a una variable.
variable=$(comando).Aritmetica: Se pueden realizar operaciones aritmeticas usando
$(($numero+3)).
Ejemplo: Expansiones
3. Entrada y salida de datos (E/S)
3.1 Comandos de consola
echo: Escribe en pantalla,echo -nevita el salto de linea.read: Lee la entrada del usuario y la almacena en una variable.
3.2 Redireccion de E/S
comando > archivo: Redirige la salida estandar a un archivocomando < archivo: Usa el contenido de un archivo como entrada
3.3 Tuberias y filtros
comando1 | comando2: El resultado (salida) de comando1 se utiliza como entrada de comando2.grep: Muestra lineas que coinciden con un patronheadytail: Muestra las primeras o ultimas n lineas de un ficherocut: Extrae columnas especificas de datossort: Ordena las lineas de salida
4. Operaciones y estructuras de control
4.1 Operaciones
expr: Se usa para realizar operaciones aritmeticas simples y manipulacion de cadenas (la multiplicacion requiere escapar el asterisco\*).test: Evalua expresiones y devuelve verdadero 0 o falso 1.Comparadores numericos:
-eqigual,-nediferente,-gtmayor,-gemayor o igual,-ltmenor,-lemenor o igualComparadores de cadena:
=igual,!=diferente, ``
Ejemplo: Operaciones
4.2 Estructuras de control
if(Condicion simple): Ejecuta un bloque de codigo si se cumple una condicion.Sintaxis:
if [ expresion ]; then ... fiSe puede ampliar con
else(si no) yelif(si no si).Se pueden anidar condiciones con
&&(AND) y||(OR).
case(Condiciones multiples): Idela para menus, compara una variable con multiples valores.Sintaxis:
case $VARIABLE in .... esacCada opcion termina con ;;.
La opcion por defecto si no coincide nada es
*).
5. Bucles
for: Se usa cuando se sabe el numero de veces que se ejecutara un codigo.Sintaxis de lista:
for VARIABLE in lista_elementos; do ... doneSintaxis C:
for ((inicio; final; avance)); do .... done
while: Repite un bloque de codigo mientras se cumpla una condicion.Sintaxis:
while [ expresion ]; do ... done
until: Repite un bloque de codigo mientras no se cumpla una condicion.Sintaxis:
until [ expresion ]; do ... done
select: Presenta un menu al usuario para que escoja una opcion y repite el bucle. Se suele usarbreakpara salir.
Ejemplo: Estructuras de control
6. Funciones
Una funcion es un bloque de codigo reutilizable, se define al principio del script.
Sintaxis:
nombre_funcion () { .... }ofunction nombre_funcion { ... }Llamada: se invocan escribiendo su nombre
nombre_funcion.Variables: Por defecto las variables son globales. Se pueden declarar variables locales con
local nombre_variable.Parametros: Pueden recibir parametros (
$1,$2,$3).Retorno: Pueden devolver un valor entero usando
return valor. El valor devuelto se recoge en la variable$?.
Ejemplo: Funciones
7. Otros elementos y comandos
Comentarios: Las lineas que empiezan por # son comentarios y no ejecutan.
7.1 Separadores de comandos:
;: Separa una misma linea, se ejecutan de manera independiente.&&(AND): El comando2 solo se ejecuta si el comando1 tuvo exito.||(OR): El comando2 solo se ejecuta si el comando1 no tuvo exito.
7.2 Control de bucles:
break: Termina la ejecucion de un bucle.continue: Detiene la ejecucion actual y pasa a la siguiente.exit: Detiene la ejeccion de todo el script.