Guía de Bash Script (con ejemplos)

Una herramienta popular de scripts que se encuentra disponible en Unix es Bash —Bourne Again Shell—. Resulta ideal para todo usuario de Linux o administrador de sistemas.

Existen 2 categorías de Unix que son principales de shells:

  • Shell tipo Bourne

  • C shell

Bourne shell puede ser catalogada como:

  • Korn shell (ksh)

  • Bourne shell (sh)

  • POSIX shell (sh)

  • Bourne Again shell (bash)

C shell también puede aparecer además como:

  • C shell (csh)

  • TENEX (TOPS) C shell (tcsh)

Los Bash scripts son un componente eficaz e ideal para el desarrollo de sitios web. Reducen tareas cortas y repetitivas a una sola línea. Incluso, puede que se consoliden varios comandos largos en un solo código ejecutable. Bash no necesita instalación adicional y está disponible en muchas versiones de Linux. Escribiendo este comando:

cat /etc/shells

podremos verificar la lista de shells disponibles.

El resultado nos dará algo como lo siguiente:

/bin/bash /bin/sh /bin/tcsh /bin/csh

¿Usar scripts Bash? ¿Por qué?

Las funciones Bash presentan varias ventajas. Entre ellas:

  • Eliminan tareas repetitivas

  • Ahorran tiempo

  • Proveen una secuencia de actividades estructurada, modular y formateada

  • Los scripts proporcionan valores dinámicos a comandos, usando argumentos de línea de comando

  • Simplifican comandos difíciles en una sola unidad en ejecución

  • Una vez creado, se puede realizar cualquier cantidad de veces por cualquier persona. De modo que se construye una vez y ejecuta muchas veces

  • Los flujos lógicos se pueden realizar utilizando funciones bash

  • Las funciones Bash es factible realizarlas al inicio del servidor o incorporando un cron job programado

  • Los comandos tienen la opción de ser perfeccionados

  • Puede tener comandos de shell dinámicos.

Bash resulta un gran recurso para facilitar tu trabajo y mejorar tus proyectos. Sus potenciales usos son ilimitados.

Comenzar con Bash

Consultá las páginas del manual de bash escribiendo:

man bash

para comenzar con las opciones básicas de los comandos.

Luego, creamos un archivo “.sh.”. Para esto implementaremos “VIM Editor”. Para crear un archivo, usá un comando como:

vim sampleFunction.sh

Ahora iremos al archivo “.sh”, donde editaremos. Esto producirá un resultado con los comandos Bash y su uso. Los scripts de bash en Linux deben comenzar en esta línea:

#!/bin/bash

El comando siguiente muestra la ruta del script bash. which bash

Ello exhibirá este resultado:

/bin/bash

La sintaxis común de bash sería:

function functionName { first command second command }

También es posible escribir así:

functionName (){ first command second command }

En una sola línea, sería:

functionName() { first command; second command; }

Un ejemplo de dicha función donde primero creamos un directorio y después cambiamos la ruta para que apunte al nuevo directorio, sería el siguiente:

sampleFunction () { mkdir -p $1 cd $1 }

El argumento de entrada de la línea de comando representa $1$ Bash puede hacer entradas dinámicas dentro del comando. Para verificar esta función, ejecutá de esta manera:

sampleFunction myDir

Este “myDir” es un nombre de directorio válido. Si examinás el directorio de trabajo actual utilizando como comando “pwd”, verás que estás dentro del “myDir” realizado recientemente.Aunque cualquier comando de uso común se puede agregar como una función bash.

Recordá que cuando hayas finalizado de usar el editor “VIM” para editar el archivo “.sh”, podés guardar y salir pulsando ESC para ingresar al modo de comando, y escribir: “wq” para guardar y salir.

Funciones básicas de Bash

Uno de los ejemplos primordiales de la función bash en Linux se muestra a continuación:

#!/bin/bash testfunction(){ echo "My first function" } testfunction

Si guardás este script en “testFunction.sh” y lo ejecutás como “./testFunction.sh”, podrás ver el resultado como:

My first function

Luego se imprime la salida en la consola. Pero generará un error si intercambiás la posición de la definición de la función con la llamada. El fragmento siguiente dará un error:

#!/bin/bash” testfunction testfunction(){ echo "My first function }

Entonces tendrás que definir la función y luego invocarla. Cualquier número de parámetros es aceptado por las funciones bash. El ejemplo a continuación toma dos parámetros:

#!/bin/bash testfunction(){ echo $1 echo $2 } testfunction "Hello" "World”

Es válido usar entradas dinámicas y realizar funciones bash. Uno de estos ejemplos es el que se muestra aquí:

#!/bin/bash addition(){ sum=$(($1+$2)) return $sum } read -p "Enter a number: " int1 read -p "Enter a number: " int2 add $int1 $int2 echo "The result is : " $?

En el ejemplo realizado, el valor de “addition” se asigna en una suma variable, y esto es lo que entrega la función. La entrada interactiva se prueba usando “read” para ambos números. Al final, el resultado se imprime con “$?” que almacena el valor “$sum” generado por la función.

Las funciones bash devuelven constantemente un único valor. Sirve mantener comentarios dentro del archivo agregando el símbolo “#” para dejar notas útiles. Los scripts bash resisten:

  • Bucle while

  • Bucle for

  • Declaración if

  • Elemento lógico and

  • Elemento lógico or

  • Declaración Else If

  • Declaración case

Aquí se muestra un breve ejemplo del bucle while:

#!/bin/bash isvalid=true count=1 while [ $isvalid ] do echo $count if [ $count -eq 5 ]; then break fi ((count++)) done

El ejemplo anterior implementa las declaraciones while e if. Esto realiza el bucle while 5 veces antes de salir, luego de verificar la declaración condicional if.

El resultado, a continuación:

1 2 3 4 5

El bucle for puede usarse para aumentar o disminuir los contadores. Un ejemplo del bucle for es el siguiente:

#!/bin/bash for (( count=10; count>0; count-- )) do echo -n "$count " done

La salida de este bucle será:

10 9 8 7 6 5 4 3 2 1

En Bash, “&&” simboliza el elemento lógico “AND”, mientras que “||” representa a “OR”.

Con las declaraciones“If” también definimos “Else if”, como a continuación:

#!/bin/bash echo "Enter a valid number" read n if [ $n -eq 101 ]; then echo "This is first number" elif [ $n -eq 510 ]; then echo " This is second number " elif [ $n -eq 999 ]; then echo " This is third number " else echo "No numbers over here" fi

El mismo ejemplo anterior se puede también tipear utilizando la declaración case como se muestra aquí:

#!/bin/bash echo " Enter a valid number" read n case $n in 101) Echo " This is the first number " ;; 510) echo " This is the second number " ;; 999) echo " This is the third number " ;; *) echo " No numbers over here " ;; esac

En las explicaciones, “case” representa una ruptura de case.

Última actualización