Gnu/Linux‎ > ‎Programación‎ > ‎

Como crear un Script

publicado a la‎(s)‎ 13 oct. 2015 7:47 por Juan Jose Ramirez Lama   [ actualizado el 13 oct. 2015 7:54 ]

Un bash script es un pequeño programa escrito en el lenguaje de nuestra consola bash. Es una herramienta muy potente y util que sirve principalmente para automatizar tareas comunes que hacemos de forma manual.

¿Cómo se hacen los bash script?

Lo primero es indicar el lugar donde se encuentra nuestra bash, por defecto se esta en /bin/bash. Esto lo hacemos del siguiente modo #! /bin/bash .#! -> con ésto le decimos a nuestra consola donde se encuentra un determinado programa, en este caso, nuestra propia shell. Tras ésto empezamos con las sentencias.


Podemos usar estructura de control (if, else, while, until ...) y variables al igual que en la mayoria de los lenguajes de programación. Las variables son fuertemente tipadas (una vez definido su tipo no podra cambiarse) y no hay que especificar su tipo (la shell es la encargada de esa labor).


Las instrucciones que podemos emplear son las mismas que empeariamos en nuestra consola, pongo un ejemplo de un script sencillito que nos actualiza el sistema:

#! /bin/bash
sudo aptitude update & sudo aptitude upgrade & sudo aptitude dist-upgrade


Abrimos nuestro editor de texto preferido (por ejemplo gedit) y copiamos ese script, lo guardamos por ejemplo con el nombre de Actualizar.sh

Para ejecutarlo podemos hacer lo siguiente, desde la consola nos situamos en el directorio donde guardamos el script y tecleando sh Actualizar.sh lo ejecutamos. Es posible que no tengamos permisos de ejecucion para ese script y lo solucionamos tecleando en consola:

$ chmod +x Actualiza.sh


Si integrar nuestro script en el sistema de forma que podamos llamarle desde cualquier lugar y poniendo solo su nombre, lo movemos a la carpeta /bin
Hecho eso, bastara con poner Actualiza.sh desde cualquier lugar para que se ejecute.


Al igual que en la consola podemos usar tuberias, esto es pasarle la salida de un comando a otro. Para ello usamos este simbolo | un ejemplo:

ls -F | grep "/"

Este comando mostrara en pantalla sólo directorios. ls -F muestra todos los archivos añadiendo al final de cada directorio el caracter espaciador (/). grep toma la salida de ls -F y filtra todos los archivos que contengan el carácter /


Podemos mostrar la salida de un programa por otro medio que no sea el estándar (pantalla) por ejemplo a un archivo. Para ello usamos el caracter > . Por ejemplo:

ls --all > archivoss.txt

Esto creara un archivo llamado archivos.txt conteniendo el resultado de ls --all

Del mismo modo con el caracter Esta es la estructura de control mas basica. Evalúa una condición y ejecuta un código dependiendo de si la condición es verdadera o falsa. La sitaxis es la siguiente:
if [ condición booleana]; then
sentencias
fi


Adicionalmente podemos usar la sentencia else que ejecuta codigo en caso de que la condicion no se cumpla:

if [condicion booleana]; then
sentencias
else
sentencias
fi

Podemos anidar varios else, del siguiente modo:

if [condicion booleana]; then
sentencias
elif [condicion booleana]; then
sentencias
else
sentencias
fi

Un ejemplo que ilustra el uso de este tipo de estructuras de control:

#!/bin/bash
A="hola"
B="buenas"
if [ "$A" = "$B" ]; then
echo Ambos son iguales
elif [ "$A" = "Buenos dias"] then
echo -e "$A vale buenos dias"
else
echo Ambos son distintos
fi


Otro tipo de estructura de control es el while. Este bucle se ejecuta indefinidamente mientras la condicion sea cierta. Esta es la sintaxis:

while [condicion booleana]; do
sentencias
done

Ejemplos:

#!/bin/bash
CONTADOR=0
while [ $CONTADOR -lt 10 ]; do
echo El contador es $CONTADOR
let CONTADOR=CONTADOR+1
done

Para que veais lo sencillo que resulta hacer un script os voy a dejar uno que pide una fecha y muestra un calendario de la fecha:

#!/bin/bash
var1="Introduzca un anio"
var2=$(zenity --entry --text "$var1")
var3=$(zenity --entry --text "Introduzca un mes")
var4=$(zenity --entry --text "Introduzca un dia")
zenity --calendar --year "$var2" --day "$var4" --month "$var3"


HolaMundo.sh

#! /bin/bash
clear
echo “Hola mundo ,este es mi primer script!!!!”

ScriptUno.sh
#! /bin/bash
clear
nombre=”Manolo el del”
apellidos=”Bombo”
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”


Comments