Publicado el 22 de Marzo del 2018
954 visualizaciones desde el 22 de Marzo del 2018
550,0 KB
32 paginas
Creado hace 18a (28/05/2008)
Documentos Aula SUN UCM
CREACIÓN DE SCRIPTS
EN LINUX
26 Mayo 2008
Autores:
Sergio Velasco
Alicia Martín
Aula SUN UCM de Software Libre
SCRIPTS EN LINUX
INDICE
1-
2-
3-
4-
5-
6-
7-
8-
9-
10-
11-
12-
13-
¿Que es el shell script?.............................................................................. 3
¿Cómo ejecutar un script?........................................................................ 3
Código de un script.................................................................................... 4
Ejemplos......................................................................................... 5
3.1- Depuración.............................................................................. 6
3.2- Estructuras condicionales...................................................... 6
3.3- Operaciones algebráicas.........................................................9
Bucles FOR.................................................................................................11
Bucles WHILE.............................................................................................
13
5.1- Comando test...........................................................................13
5.2- While........................................................................................ 15
5.3- Until..........................................................................................17
Parametros posicionales............................................................................ 18
IFS Delimitador..........................................................................................19
Arrays......................................................................................................... 20
Funciones.................................................................................................... 21
Leer un fichero........................................................................................... 23
Creación de demonios................................................................................24
11.1- Ejecutar un demonio o script sin contraseña..................... 27
Uso del Cron................................................................................................
27
Colores en la consola..................................................................................29
2
SCRIPTS EN LINUX
CREACIÓN DE SCRIPTS EN LINUX
Definición de Script: Un script es un archivo que incluye un conjunto de comandos.
Son ejecutados desde la primera línea hasta la última (de forma secuencial).
1-
¿QUÉ ES EL SHELL SCRIPT?
Un Shell Script es un script para la shell de comandos (terminal). Para crear un script
vasta con un editar un fichero nuevo y en el nombre poner .sh Ejemplo: HolaMundo.sh
Un vez creado, empezamos a editarlo. Se puede utilizar un editor de textos gráfico
como gedit o un editor en terminal como vim, nano o emacs.
En la primera línea del script se debe indicar que shell que vas a usar ( /bin/bash/ , /usr/
bin/perl , etc ) Aunque da igual la que uses lo importante es el contenido:
#! /bin/bash
#! Se conoce con el nombre de Sha Bang.
Se denomina “sha-bang” a la secuencia #! con la que se inician los scripts. Su función
es indicarle al sistema que se trata de un conjunto de comandos para que sean
interpretados. En realidad, es un número mágico de dos bytes. El número mágico es un
marcador especial para indicar el tipo de archivo, en este caso, indica que se trata de un
script de shell ejecutable.
Para introducir comentarios se debe poner #. Por cada linea que deseéis poner un
comentario, lo primero que debe tener es #. Es importante añadir comentarios
comentando la utilidad del script o las variables que se crean.
2-
¿CÓMO EJECUTAR UN SCRIPT?
Antes de poder ejecutarlo, debemos darle permisos de ejecución. (+x) por ello, haremos
uso del comando chmod y damos permisos de ejecución, si se desea, se pueden dar a
todos los usuarios y grupos.
chmod 755 /ruta_del_script Para el usuario propietario
chmod 777 /ruta_del_script Para cualquier usuario
Una vez hecho todo lo anterior, usaremos:
./nombredelscript.sh
3
SCRIPTS EN LINUX
Pero también podemos usar si es un shell script:
sh nombredelscript.sh
3-
CÓDIGO DE UN SCRIPT
Ya tenemos el script creado, le hemos puesto la cabecera y le hemos cambiado los
permisos, ya solo falta meter el código.
Vamos a empezar desarrollando lo esencial para ir desarrollando estructuras más
complejas:
Lo primero es saber cómo dar valor a una variable. Es tan sencillo como poner:
nombre_variable=valor
Si deseas guardar la salida de un programa solo tienes que ponerlo entre tildes
invertidas:
nombre_variable=`comando`
Tambien hay un comando que lee por teclado las variables ( read ). Para ponerlo es:
read [opciones] nombre_variable1 nombre_variable2 nombre_variableN
ejemplo:
read -p “Introduce el nombre y los apellidos” nombre apellidos
Tiene un montón de opciones pero estas son las más importantes y usadas:
-n num_car : Número máximo de caracteres que puedes introducir por teclado
-p “frase” : Te muestra por pantalla una frase para tu saber que debes introducir
-d “delimitador” : Especificas cual va a ser el delimitador, es decir si dices que el
delimitador sera “;” pues todo lo que venga antes de un “;” lo cogerá una variable y todo
lo que venga después de ese delimitador hasta el próximo “;” lo cogerá otra variable.
Cuando queremos utilizar el valor de una variable en el código, nos referiremos a éste
como:
$nombre_variable
4
SCRIPTS EN LINUX
EJEMPLOS 1
Estos son algunos de los ejemplos de esta primera parte. Para ejecutarlos sólo hay que
crear un archivo .sh y copiar las letras negras, lo azul es la sugerencia para el nombre
del script.
A lo largo de los ejemplos se introducen algunos comandos básicos de Linux.
HolaMundo.sh
#! /bin/bash
clear
echo “Hola mundo ,este es mi primer script”
ScriptUno.sh
#! /bin/bash
clear
nombre=“Perico”
apellidos=“Palotes”
echo “Te llamas $nombre $apellidos”
Fecha.sh
#! /bin/bash
clear
fecha=`date | cut -d “ ” -f 1,2,3`
hora=`date | cut -d “ ” -f 4`
echo “Hoy es $fecha y son las $hora”
OtroScript.sh
#! /bin/bash
clear
# IFS es una variable de entorno que determina el delimitador de
#campos
# (que por defecto vale “ ”),en este script queremos
# cambiarlo a “,” para escribir por teclado nombre,apellidos
IFS=“,”
read -p “Introduce el nombre,apellidos : ” nombre apellidos
echo “El nombre es $nombre y los apellidos son $apellidos”
5
SCRIPTS EN LINUX
3.1- Depuración
Depuración de programas es el proceso de identificar y corregir errores de
programación.
En inglés se le conoce como debugging, ya que se asemeja a la eliminación de
bichos (bugs), manera en que se conoce informalmente a los errores de programación.
Se dice que el término bug proviene de la época de las computadoras de bulbos, en las
cuales los problemas se generaban por los insectos que eran atraídos por las luces y
estropeaban el equipo.
Depurar el código sirve para ver como se ejecuta paso por paso el script, que
valores toman sus variables, si has cometido un fallo saber en que parte del código ha
sido, etc. No es algo que se deba hacer obligatoriamente por cada script realizado (sería
demasiado pesado) pero te facilita mucho a la hora de buscar el problema que te surja.
Hay dos formas :
bien
en
línea
la
1.O
-v
-x –> Te muestra las instrucciones antes de ejecutarlas por consola y sustituyendo
las
variables
-v –> Te muestra todo pero sin sustituir las variables
set
2.O
Cambiando las opciones de ejecución de la shell a lo largo del script, también con
las opciones -x | -v
Mediante
/bin/bash
-x
|
#!
3.2-
Estructuras condicionales
La estructura básica de una condición sería:
if condición
then
comando1
...
...
else
comando1
...
...
fi
Como veis la condición si (if) se cierra con su correspondiente fi que al parecer un juego
de palabras es fácil de recordar.
Entonces si la condición se cumple entraría por el then, en caso de que no, por el else.
Pero este es un método simple, luego tenemos uno más complejo con if anidados, sería:
6
SCRIPTS EN LINUX
if condición
then
comando1
elif condición
then
comando
elif condición
then
...
fi
Ahora lo que hace es evaluar la condición, si es verdadera entra por el then, pero
si no y se da el caso de otra condición entraría por el elif, los elif no se cierran,
solamente el fi final corresponde a la apertura del if.
La condición es cualquier cosa que de un return (que devuelva) algo que sea 0 o
verdadero.
Notese el uso del archivo /dev/null como archivo vacío para comprobar algunas
condicionales.
Vemos como podemos hacer un script para comprobar que realmente la ruta es un
directorio.
CompruebaDirectorio.sh
#! /bin/bash
clear
if `cd /tmp/prueba/ >/dev/null`
then
echo “Pues si, es un directorio y contiene…”
ls -l
else
echo “Pues va a ser que no es un directorio”
fi
Este script es un claro ejemplo de como comprobar si un usuario y un grupo existen en
el sistema, vemos también el uso que se le da al elif.
ExisteGrupoUsuario.sh
#! /bin/bash
clear
read -p “Introduce usuario… ” user
read -p “Introduce grupo… ” group
if `grep -e “^$user:.*” /etc/passwd >/dev/null`
then
if `grep -e “^$group:.*” /etc/group >/dev/null`
then
echo “Usuario y grupo ya existen en el sistema”
fi
elif `grep -e “^$group:.*” /etc/group >/dev/null`
then
echo “usuario no existe, grupo si!!”
else
echo “Ni grupo ni usuario existen”
fi
7
SCRIPTS EN LINUX
Condicionales case
Se estructuran de la siguiente forma:
case expresion in
caso1) comandos ;;
caso2) comandos ;;
*) comandos ;;
esac
Para aquellos que sepan de programación, funciona igual que los
Comentarios de: CREACIÓN DE SCRIPTS EN LINUX (1)