Lo esencial para escribir tu primer programa en Shell Script

Autor: | Última modificación: 12 de marzo de 2024 | 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
  • $@: 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 ScriptPropulsora 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] .