Lo esencial para escribir tu primer programa en Shell Script

Autor: | Última modificación: 11 de noviembre de 2022 | Tiempo de Lectura: 5 minutos
Temas en este post:

¿Te han pedido que hagas uno de tus desarrollos utilizando Shell Script? No te desesperes buscando cómo empezar. Aquí te dejamos todo lo esencial para que inicies uno.

Luego ya puedes dirigirte a StackOverflow para ir consultando temas específicos que necesites en tu lógica. 

Scripts

Lo primero que tienes que saber, es que existen bastantes Scripts en el mundo de la programación. Como te debes imaginar, PHP es un lenguaje scripting, así como el cada vez más popular y utilizado: Javascript. De lado de machine learning, tenemos al famoso Python. Claro, también te sonará Bash. Es un derivado de Bourne Shell. Exactamente proviene de las palabras “Bourne Again Shell”. En esta publicación, te enseñaré lo esencial para que puedas escribir tu primer programa en Shell Script (Bourne Shell $) sin problemas. Luego depende de ti la complejidad del programa. Considera que el lenguaje scripting es bastante divertido, puesto que no necesita de compilaciones, y es bastante robusto. Con ello, puedes hacer un sinfín de utilidades y automatizaciones genuinamente complejas.

Creación del Shell Script

Para que te des cuenta que es muy sencillo, ni siquiera necesitas instalarte una IDE específica ni instalar nodejs ni ejecutar npms ni nada por el estilo. Cualquier editor de texto bastará, incluso el Notepad++ que seguro tienes por ahí. Puedes abrir vi, si es más de tu estilo.

Si ya abriste tu editor de texto, asegúrate que tu primer línea que escribas, sea la siguiente:

#!/bin/bash

Seguramente ya lo has visto un millón de veces, si has leído otros programas en Shell Script. El primer símbolo “#!” se llama shebang, y simplemente indica qué programa usará para interpretar el script creado. Inmediatamente después, se coloca el directorio donde se encuentra el Shell. Por lo tanto, asegúrate de no olvidar colocar esa línea esencial. Sin eso, tus comandos no servirán de nada. Por ahora, guardemos. Para ello, no te olvides de hacerlo con el encoding apuntando a UNIX, y claro, la extensión, sin duda alguna es “.sh”. Para efectos de este post, lo llamaré “just-code-it.sh”. Tú lo puedes llamar como te sea más conveniente, dependiente de la lógica final de tu programa o su propósito.

Ejecución del Shell Script

Para esto, dirígete a un terminal (shell, más popular Bash). Las distribuciones de GNU/Linux son perfectas para esto, ya que el Shell convierte todos los comandos que escribas en algo perfectamente entendible para el Kernel, y la ejecución no podría ser más simple. Escribe cualquiera de las siguientes opciones:

  • sh just-code-it.sh
  • ./just-code-it.sh
  • bash just-code-it.sh

En caso desees o necesites otorgar permisos a tu archivo para la ejecución, solo necesitas el comando “chmod”. Te recomiendo googlearlo para que lo domines. Por ahora, te dejo el siguiente comando completo para que le des permiso tanto lectura, escritura y de ejecución.

chmod 755 just-code-it.sh

Te aconsejo usar el 700 si deseas que el archivo creado sea privado. Pero en fin, eso es todo para su ejecución.

Comandos básicos

Lo primero que tienes que saber es que todas las variables se inicializan con el NOMBRE=valor. Es un estándar conocido que los nombres de las variables se escriben en mayúsculas, y por nada del mundo dejes espacios entre el signo igual. Ejemplo:

  • NOMBRE = valor
  • NOMBRE= valor
  • NOMBRE =valor

Todos los anteriores están mal.

Lo siguiente que debes saber es que si quieres validar que estás inicializando bien tus variables, puedes usar echo NOMBRE a cada rato. Lo que hace echo es prácticamente imprimirte los valores, como un print en otros lenguajes. Otro relevante para documentar tu código conforme avances, es que para escribir un comentario, solo usas el signo #.

Los condicionales y los ciclos (Con esto me refiero a los clásicos if, case, for, while, etc), los puedes googlear conforme los necesites, ya que no son difíciles de implementar. En todo caso, más adelante te pondré un ejemplo con varios comandos mencionados.

Lo más relevante ahorita es que conozcas los parámetros especiales, porque más de uno se pierde cuando ve esto en algún programa Shell. Es muy simple:

  • $0: Indica el nombre del programa shell
  • $$: PID del programa shell
  • $!: PID del último proceso que ahorita se encuentra en segundo plano
  • $#: Indica el número de parámetros que se pasan al programa Shell, en caso utilices
  • [email protected]: Todos los parámetros pasados en el shell-script, de manera separada (Lista)
  • $*: Todos los parámetros como uno solo, con los espacios tal cual se hayan escrito.
  • “$*”: Todos los parámetros como uno solo, con un espacio por defecto entre cada uno.
  • $(): Dentro de los paréntesis se escriben funciones nativas
  • ${}: Dentro de las llaves usas las variables creadas. También se puede usar de frente: $NOMBRE.

Con eso, ahora veamos un ejemplo pequeño que solidifique todo lo anterior:

Shell Script

De todas maneras, te lo dejo de manera escrita:

#!bin/bash

# Programa: just-code-it.sh

# Autor: guia-del-programador

# Creado: 18/01/2020

# Versión: 0.1.0

# Descripción: Prueba básica para comprender ciertos comandos

FECHA=$(date +»%Y%m%d») #creación de variable

DIR_PRINCIPAL=»/code-it/proyectos/utilitarios» #creación de variable

echo «${FECHA} – Proceso iniciado…» #echo imprime

crear_archivo() #Definiendo función

{

    if [ ! -f «$1»] #-f solo es para validar si existe

    then

    echo «Creando el archivo $1…»

     touch «$1» #touch crea el archivo

    else

     echo «El archivo ya existe, procediendo a reemplazar…» #echo imprime

     echo «¿Desea que el archivo sea reemplazado? Conteste SI o NO»

    while :

    do

      read RESPUESTA_USUARIO

      case $RESPUESTA_USUARIO in

    SI)

    echo «Reemplazando archivo…»

    rm r «$1»

    touch «$1»

    ;;

    NO)

    echo «Reemplazo omitido.»

    break

    ;;

    *)

    echo «Respuesta inválida. Procediendo a reemplazar ;)…»

    rm r «$1»

    touch «$1»

    ;;

      esac

    done

    fi

}

ARCHIVO_GENERADO=»${DIR_PRINCIPAL}/${FECHA}.txt»

crear_archivo «${ARCHIVO_GENERADO}» #invocando función

echo «${FECHA_ACTUAL} – Proceso $0» >> $ARCHIVO_GENERADO #Agrega esa línea en el archivo creado o existente

exit 0

Como una última ayuda, considera lo siguiente (también muy utilizado):

  • -f: Si es un archivo
  • -w: Si es un archivo que se puede escribir
  • -r: Si es un archivo que se puede leer
  • -x: Si es un archivo ejecutable
  • -d: Si es un directorio
  • -nt: Si el archivo es más nuevo que… (En comparación con otro archivo)
  • -eq: Si es igual (Numérico)
  • -ne: Si no es igual (Numérico)
  • -lt: Si es menor
  • -gt: Si es mayor
  • -le: Si es menor o igual
  • -ge: Si es mayor o igual
  • -z: Si la longitud de la cadena es cero.
  • -n: Lo contrario de -z

Eso es todo por ahora. Con esta publicación, espero haber resumido lo más básico de un programa Shell para que puedas empezar e ir probando. Sin duda te encontrarás con varios obstáculos, y poco a poco, serás maestro del shell.

Stéphane Angeles

Lo esencial para escribir tu primer programa en Shell Script 1Propulsora y creadora de la nueva web guia-del-programador.com, genera publicaciones semanales para ayudar a actuales y futuros programadores a mejorar cada día.

Guía del programador se enfoca en todos los puntos que necesitas para poder seguir adelante: Cursos, consejos, recomendaciones, entre otros. Además, se encuentra afiliado a muchos programas de tecnología para poder brindarte descuentos, ofertas, noticias y reseñas verídicas.

Si quieres formar parte de la comunidad KeepCoding, compartiendo información relevante sobre desarrollo Web, Mobile, Big Data o Blockchain puedes escribirnos a [email protected] .

[email protected]