Principios de Scripting en Bash

Avatar Tutor | noviembre 4, 2018

Bash es un lenguaje de script y al mismo tiempo es el intérprete de shell predeterminado en la mayoría de las distribuciones de Linux. Es utilizado principalmente por desarrolladores de software y administradores de sistemas para fines de automatización. Sin embargo, Bash también es usado por aficionados, personas que aman programar desde la comodidad de su casa.

No tienes que tener mucho conocimiento para comenzar, de hecho en internet puedes encontrar un sin fin de manuales que pueden ayudarte con esto. Ciertamente es sencillo aprender. Aquí en este post/tutorial te daremos una pequeña introducción a Scripting en Bash.

Introducción a Scripting en Bash

Para comenzar esta introducción a Scripting en Bash deberás contar con ciertos requisitos bastante simples, como por ejemplo contar con mucha paciencia y ganas de aprender.

Se trata de programación por tanto entenderás que es algo que lleva algo de tiempo comprender si estás apena comenzando en este campo.

Te agradará saber que para esta introducción a Scripting en Bash no necesitarás instalar nada, ya que como dijimos al principio Bash es el Shell predeterminado de la mayoría de las distribuciones de Linux.

Sin embargo, si necesitaras un editor de texto y un terminal. Te recomendamos un editor de texto que admita el resaltado de sintaxis y que sea amigable con el programador, como jEdit, notepadqq, vi o emacs.

También, sería muy bueno que ya poseas algo de experiencia en algún leguaje de programación como C, C ++, Java, ya que así te resultará más fácil y rápido entenderlo. Sin embargo, si no es así, no de te desanimes ya que Bash es fácil de aprender.

Todo lo que vamos a explicar en este artículo será lo que son las variables en Bash y veremos algunos ejemplos que podrá compilar y arrancar en tu ordenador para que comiences a practicar. Se trata de aprender en la marcha.

Alternativamente a esto, puedes bajar este manual de Bash a través del siguiente enlace: http://thales.cica.es/rd/glinex/practicas-glinex05/manuales/bash/practica.pdf. Dicho esto, comencemos.

Variables

Una de las cosas más importantes en esta introducción a Scripting en Bash son las variables ya que juegan un papel fundamental a la hora de programar. Por tanto, te explicaremos qué son y qué tipo de variables existen.

Qué son las variables

Una variable es una ubicación de almacenamiento que contiene un valor. Literalmente, una variable se comporta como un recipiente vacío que puede contener algo como:

  • Un número entero como 123
  • Número de punto flotante como 123.1
  • Una letra como ‘z’
  • Una cadena de caracteres como “¡Hola!”

En esta introducción a Scripting en Bash veremos cuáles son las variables en Bash

Variables Bash

En Bash, una variable se declara anteponiendo el símbolo de “$” y luego escribiendo su nombre de identificador. A continuación te mostramos una variable llamada “variable”.

$variable

Por otro lado, si declaras una variable y le asignas algún valor al mismo tiempo, deberás omitir el símbolo “$” tal como en el ejemplo que te mostramos a continuación.

variable = 123

Si coloca el símbolo “$” en esas variables (definidas), se producirá un error cuando intentes ejecutar el programa. Es probable que te resulte algo confuso al principio pero créenos, todo está mucho mejor cuando comiences a analizar algunos ejemplo de scripts.

Ejemplos

Esto no podría ser una verdadera introducción a Scripting en Bash sin los correspondientes ejemplos. A continuación te presentamos seis ejemplos de scripts que puedes probar en tu ordenador.

Y nuevamente te recordamos que se trata de una Introducción a Scripting en Bash por lo que los ejemplos no son muy elaborados para que los principiantes puedan comprenderlo fácilmente.

Ejemplo 1: Hola Mundo

Sin duda, el programa más simple que puedes realizar.

#!/bin/sh
echo "hola mundo"

Ejemplo 2: Argumentos del script de shell

#!/bin/bash
# ejemplo de usar argumentos para un script
echo "Mi primer nombre es $1"
echo "mi apellido es $2"
echo "El número total de argumentos es $#"

Guardamos este archivo como name.sh y establecemos el permiso de ejecución en ese archivo escribiendo chmod a + x name.sh y luego ejecutando el archivo así: ./name.sh .

$ chmod a+x name.sh
$ ./name.sh Hans-Wolfgang Loidl
Mi primer nombre es Hans-Wolfgang
Mi apellido es Loidl
El número total de argumentos es 2

Ejemplo 3: Almacenar

Este programa simplemente almacenará el valor numérico 123 en la variable llamada “número” y luego lo imprimirá en la pantalla.

#!/bin/bash 
number = 123 
echo $number

Ejemplo 4: Calcular y almacenar

Este programa calcula el lado derecho y luego almacena el resultado en el lado izquierdo.

#!/bin/bash 
readonly x = 2 
readonly y = 2 
let sum = $x + $y 
echo $sum

Ejemplo 5: Entrada de usuario

Este programa solicitará la entrada del usuario (donde ingresará un valor numérico) y este almacenará el número en una variable que luego mostrará en la pantalla del terminal.

#!/bin/bash 
echo Ingrese un numero: 
read numero 
echo El numero que ingresó es $

Ejemplo 6: Conteo de líneas

A continuación veremos un ejemplo de conteo de línea. Este ejemplo simplemente cuenta el número de líneas en un archivo de entrada. Lo hace mediante la repetición en todas las líneas de un archivo usando un tiempo de bucle.

El cuerpo del bucle se ejecutará en este caso simplemente aumentando un contador en ((counter ++)). Además, la línea actual se escribe en un archivo, cuyo nombre está especificado por la variable file.

Algo a considerar es que la variable entera, sobre la cual se realiza la iteración, debe contar siempre para que el análisis pueda encontrar un límite. Esto podría requerir una cierta reestructuración del código, como veremos en el ejemplo, donde se introduce un contador z explícito para este propósito.

Después del bucle, se imprimen el recuento de líneas y el contenido de la última línea, utilizando echo.

#!/bin/bash
# Simple line count example, using bash
#
# Bash tutorial: http://linuxconfig.org/Bash_scripting_Tutorial#8-2-read-file-into-bash-array
# My scripting link: http://www.macs.hw.ac.uk/~hwloidl/docs/index.html#scripting
#
# Usage: ./line_count.sh file
# -----------------------------------------------------------------------
# Link filedescriptor 10 with stdin
exec 10<&0
# stdin replaced with a file supplied as a first argument
exec < $1 # remember the name of the input file in=$1 # init file="current_line.txt" let count=0 # this while loop iterates over all lines of the file while read LINE do # increase line counter ((count++)) # write current line to a tmp file with name $file (not needed for counting) echo $LINE > $file
    # this checks the return code of echo (not needed for writing; just for demo)
    if [ $? -ne 0 ] 
     then echo "Error in writing to file ${file}; check its permissions!"
    fi
done
echo "Number of lines: $count"
echo "The last line of the file is: `cat ${file}`"
# Note: You can achieve the same by just using the tool wc like this
echo "Expected number of lines: `wc -l $in`"
# restore stdin from filedescriptor 10
# and close filedescriptor 10
exec 0<&10 10<&-

Written by Tutor