BASH SCRIPT
Bash Scripting es un lenguaje de programación, que apoyado con el interprete de comandos de Linux, automatiza y programa tareas.
Un fichero bash, es un ejecutable que contiene el código con el que operará el sistema.
Para crear un archivo bash solo necesitamos escribir desde el terminal cualquier comando que abra un editor de texto compatible con bash (como nano o vi) o el comando touch (touch crea un archivo vacío para su posterior modificación) seguido del nombre que deseemos para el fichero y la extensión .sh
Crear fichero Bash:
nano NombreFichero.sh
touch NombreFichero.sh
vi NombreFichero.sh
Para escribir el código, siempre la primera línea de código que debe haber en un fichero bash debe ser el comentario #!/bin/bash, este comentario le avisa al intérprete de Linux cuando se ejecute el archivo cual es el lenguaje que ha de usar.
Comentar el lenguaje usado:
xxxxxxxxxx
Para ejecutar el archivo, una vez escrito el código, se introduce en la terminal el comando bash o sh seguido del nombre del archivo y de su ruta si no estamos en la misma carpeta que el.
Ejecutar fichero Bash:
xxxxxxxxxx
bash NombreFichero.sh
sh NombreFichero.sh
#Si estamos fuera de la carpeta del fichero.
bash /Ruta/de/la/Carpeta/NombreFichero.sh
Una variable es un espacio en la memoria, el cual guarda (o reserva su espacio) para un valor, a este espacio se accede mediante una palabra clave a la cual esta asociado. Una variable esta formada por:
Son el tipo de variable mas sencilla y que menor espacio ocupan de memoria, dependen del valor de la variable y de como va a operar con ella el código, nos encontramos con estos tipos de variables:
Variable numérica: Su valor es un número.
Variable alfanumérica: Su valor es entendido como caracteres, aunque su valor fuera un numero no operaria con él al entenderlo como un carácter.
Variable lógica o booleana: Este tipo de variables solo tienen 2 valores posibles True o False. dependen de una condición, por ejemplo 5>0 y según si la condición se cumple o es falsa, su valor será True (1) o False (0).
Estos tipos de variable son mucho mas complejos por lo que únicamente nos enfocaremos en las listas o arrays.
Crear variables:
xxxxxxxxxx
num=5
char1=a
char2="5"
string1=palabra
string2= "Hola mundo."
Crear variable Array:
xxxxxxxxxx
lista=(uno dos tres)
#Así se añade valores a la lista:
lista[3]="cuatro"
lista[4]="cinco"
Una vez creadas las variables solo necesitaremos trabajar con ellas, para ello necesitaremos llamarlas, el código para llamar una variable es simple, el $ seguido de su Identificador.
Llamar variables:
x
#echo es un comando que imprime en pantalla lo que viene a continuacion en la linea de codigo, en caso de haber variables, imprime su valor.
echo $num
ls $string1
mkdir $string2
#Así imprimiriamos todo el Array:
echo $lista[*]
#Así imprimiriamos el primer ítem del Array:
echo $lista[0]
El valor de las variables no tiene porque venir siempre predefinido en el código, para evitar esto y poder tener mas juego con las variables, son muy útiles los argumentos de entrada como read.
Read crea una variable sin valor, al ejecutar el fichero, cuando la lectura del código llegue al comando read, este crea un argumento de entrada en la terminal, pudiendo escribir en el, el valor que deseemos para la variable que le sigue.
Un ejemplo perfecto para entender read es un fichero que nos pregunte el nombre.
Nombre.sh:
xxxxxxxxxx
echo '¿Cual es tu nombre?'
read Nombre
echo '¿Y tu apellido?'
read Apellido
echo 'Tu nombre es $Nombre $Apellido .'
Ejecutamos Nombre.sh
xxxxxxxxxx
root@alumno:/scripts: sh Nombre.sh
¿Cual es tu nombre?
minombre
¿Cual es tu apellido?
miapellido
Tu nombre es minombre miapellido
Bash scripting tiene añadidas las operaciones matemáticas dentro de su lenguaje, como sumar, restar, multiplicar y dividir. Estas podrán ser muy útiles dentro de nuestros programas, como por ejemplo en la calculadora que he creado con bash al final de esta página.
Para crear una operación en bash, primero hay que llamarla, para ello usamos $ seguido de dos (()) paréntesis, y dentro de ella la operación, MUY IMPORTANTE dejar un espacio entre el operando y los operadores.
xxxxxxxxxx
#sumar
echo $((8 + 8))
#restar
echo $((8 - 8))
#multiplicar
echo $((8 * 8))
#dividr
echo $((8 / 8))
Aunque no solo podemos operar con números concretos, sino que también podemos operar con variables. El proceso es el mismo, sustituyendo el numero por la variable.
xxxxxxxxxx
num1=8
num2=6
echo $((num1 + num2))
Case es una instrucción de bash que nos permite crear casos dependiendo del valor de una variable, su funcionamiento es sencillo, entra en el comando case, lee el valor que tenga su variable y entra en el caso que tenga el mismo valor:
xxxxxxxxxx
#primero iniciamos el comando case, llamando a la variable de la que dependera el caso.
case $variable in
#creamos los distintos casos, escribiendo los posibles valores que contemplamos para la variabe.
caso1)
#escribimos el codigo que tendrá el caso. y cerramos el caso con ;;
;;
caso2)
echo codigo de ejemplo
;;
caso3)
echo codigo de ejemplo
;;
#por ultimo cerramos case con esac, (case al reves).
esac
DATOS UTILIES PARA USAR CASE:
xxxxxxxxxx
case $variable in
#(SOLO EN STRINGS) con los corchetes podemos decirle al interprete que la primera letra de la variable puede ir en mayusculas o minusculas.
[Cc]aso1)
echo codigo de ejemplo
;;
#con la tuberia "|" podemos separar variables, teniendo varios posibles valores para un mismo caso:
caso2 | 2)
echo codigo de ejempo
#Entrara en este caso si la variable vale "caso2" o "2"
;;
#si usamos "*" como posible valor, entrara en este caso siempre, por eso es muy util utilzar este caso, como el caso de error.
#IMPORTANTE: dejar este caso como el ultimo ya que sino entraria siempre en este caso.
*)
echo error. la variable no tiene un valor contemplado.
esac
La instrucción while es un bucle que se repite constantemente mientras se cumpla una condición, el mejor ejemplo para entender esta instrucción es un contador.
xxxxxxxxxx
#creamos una variable auxiliar de la que dependera el while.
i=0
while (( i < 15 ))
do
i=$i+1
echo "$i"
done
#cuando el ordenador ejecute el while, la variable i, de la que dependera nuestro bucle entrará valiendo 0, y sumará 1 a su propio valor, repitiendo este proceso hasta que la condicion deje de cumplirse, en este caso cuando el valor de i sea 15.
Como vemos en el ejemplo, la forma de ejecutar while es, inicializándolo con la expresión while seguido de una condición entre dos paréntesis, CUIDANDO los espacios ya que bash es key sensitive. y encerrando después de while, entre do y done el bucle que deseas que se repita.
IMPORTANTE: es imprescindible que la condición de la que depende el bucle deje de cumplirse en algún momento, ya que si no nos encontraríamos con un bucle infinito y habría que forzar el cierre si se ejecuta.
Esta instrucción al igual que while es un bucle, en otros lenguajes de programación, for es una mejora de while y su función es prácticamente la misma o muy similar, sin embargo, en bash, for se reduce a un bucle para recorrer los ítems de una lista, ejemplo.
xxxxxxxxxx
lista=(Tomate Pan Azucar Huevos)
for i in ${lista[@]}
do
#Cada vez que entra en el bucle, el valor de i es el item siguiente de la lista.
echo "$i"
done
#Al ejecutar todo este codigo nos imprimiria en pantalla toda la lista de la compra.
Como vemos en el ejemplo, se declara for, seguido de una variable (no hace falta declararla antes), esta variable será la que pase a valer uno a uno los valores de la lista. después de la variable se añade in y se llama a la lista que desearemos recorrer, después entre do y done, al igual que en while, se encontrara el código que será el bucle.
Este es el código con el que yo he creado la calculadora, en el video de debajo explico como funciona línea a línea.
xxxxxxxxxx
echo ¿Cual va a ser el primer numero a operar?
read num1
echo ¿Cual va a ser el segundo numero a operar?
read num2
echo ¿Cual va a ser el operando, opciones: multiplicar (1), sumar (2), restar (3), dividir (4).
read operando
case $operando in
[Mm]ultiplicar | 1)
echo "el resultado es $((num1 * num2))"
;;
[Ss]umar | 2)
echo "el resultado es $((num1 + num2))"
;;
[Rr]estar | 3)
echo "el resultado es $((num1 - num2))"
;;
[Dd]ividir | 4)
echo "el resultado es $((num1 / num2))"
;;
*)
echo "Lo siento solo se sumar, restar, multiplicar y dividir."
;;
esac