Scripting · 8 min read · Nov 14, 2025

Shell Scripting Parte 2: Aceptando Entradas y Realizando Aritmética en Shell

¡Hola! Este artículo es la segunda parte de la serie de tutoriales de scripting en shell de Howtoforge. Para este momento, asumo que has leído la primera parte de la serie y sabes cómo crear un script simple y ejecutarlo. En la segunda parte, aprenderás cómo aceptar entradas del usuario y procesarlas a través del scripting en shell. ¡Comencemos!

Variables en Linux

Al igual que los lenguajes de programación, el shell de Linux tiene la capacidad de almacenar datos en variables. Una variable es un contenedor que almacena temporalmente datos que serán procesados a través de un lenguaje de programación. Hay dos tipos de variables en Linux: las variables de entorno y las variables de shell.

Variables de Entorno

Las variables de entorno son las variables predeterminadas en Linux y se utilizan para pasar información entre procesos en el shell. Las variables de entorno son sensibles a mayúsculas y minúsculas y siempre deben estar en mayúsculas para poder acceder a ellas.

La tabla a continuación muestra las variables de entorno comunes en el shell de Linux:

Nombre de variableUso
BASHContiene la ruta completa del intérprete de comandos para scripts de Bash
BASH_VERSIONContiene la versión de lanzamiento de bash de la máquina actualmente utilizada
HOMEContiene la ruta relativa del directorio home.
LOGNAMEContiene el nombre de cuenta del usuario actual conectado
OSTYPEContiene una cadena que describe el sistema operativo actual de la máquina utilizada
PATHContiene una ruta absoluta separada por dos puntos de los archivos ejecutables en Linux
PWDContiene el directorio de trabajo actual del shell
SHELLContiene el shell de línea de comandos preferido
USERFunciona de manera similar a LOGNAME. Contiene el nombre de cuenta del usuario actualmente conectado
_Contiene el nombre del comando utilizado recientemente en el shell

Para mostrar el valor de una variable de entorno, el usuario debe anteponer un signo de dólar ($) a la variable que se va a acceder. Por ejemplo, para mostrar información del sistema como el directorio de trabajo actual, el usuario conectado y el tipo de sistema operativo usando echo, usamos:

#!/bin/bash  
 echo $PWD  
 echo $LOGNAME  
 echo $OSTYPE

El resultado es:

Para obtener la lista completa de variables de entorno en Linux, usa el comando env.

Cambiando valores de variables de entorno

Para proporcionar flexibilidad al sistema, estas variables de entorno pueden ser manipuladas. Para establecer un valor en una variable de entorno, usa una expresión de asignación (signo igual).

Ejemplo:

#!/bin/bash  
 echo $USER  
 USER="nuevo usuario"  
 echo $USER

El resultado del script es:

Cuando ejecutas el script, al principio, el $USER en la línea echo $USER muestra el valor de la variable USER. Al usar un operador de asignación (=), la variable USER cambia su valor. Sin embargo, si el usuario asigna valores desconocidos a una variable de entorno, el shell creará otra variable de shell similar a la variable de entorno en el contexto local del script, pero no afectará el comportamiento de otras aplicaciones. Es decir, una vez que nuestro script se cierre, la variable USER retendrá su valor predeterminado.

Ten en cuenta que en nuestro ejemplo anterior, omitimos el signo de dólar ($) en el nombre de la variable al manipular valores de las variables de entorno, como en la línea USER=”nuevo usuario”. Además, al usar el operador de asignación, no debe haber espacio entre el USER y el signo de igual. Agregar un espacio entre ellos crea un error.

Variables de Shell

El shell también permite al usuario declarar variables. Al igual que en PHP, para declarar una variable en scripts de shell, el usuario no tiene que preocuparse por declarar su tipo de dato; el intérprete detectará automáticamente el tipo de dato de la variable según los datos que el usuario almacene en ella durante el tiempo de ejecución.

Reglas para nombrar variables de shell

Al igual que en cualquier lenguaje de programación, hay reglas para nombrar variables de shell. A continuación se resumen las reglas:

  1. Los nombres de las variables deben comenzar con una letra o un guion bajo.
  2. Solo deben contener caracteres alfanuméricos o un guion bajo.
  3. Las variables son sensibles a mayúsculas y minúsculas, por lo que las variables path, PATH y Path son diferentes.

Para probar esta regla, crearemos un script simple a continuación:

#!/bin/bash  
 12abc=10  
 abc#*=10  
 _abc=10  
 _ABC=2  
 echo $12abc $abc#* $_abc $_ABC

Las líneas 2 y 3 devuelven un error de “comando no encontrado” porque la variable 12abc comienza con un carácter numérico y la variable abc#* contiene caracteres ilegales. También probamos que _abc y _ABC son variables diferentes y que la línea _ABC=2 no anula el valor de _abc.

Asignando valores a variables de shell usando el comando read:

read es un comando que permite aceptar entradas del usuario. La sintaxis para usar el comando read es:

read 

Por ejemplo, crearemos un script que permitirá a un usuario ingresar su nombre y apellido y mostrarlos. Para que el usuario sepa qué hacer, mostramos un aviso al usuario con el comando echo.

#!/bin/bash  
 echo "Tu nombre: "  
 read fname  
 echo "Tu apellido:"  
 read lname  
 echo "¡Hola $fname $lname! Estoy aprendiendo a crear scripts de shell."

El resultado es:

Ten en cuenta que, al igual que en nuestro ejemplo anterior, no tenemos que declarar una variable para usarla. El intérprete también crea automáticamente la variable que se utiliza en el comando read. Sin embargo, en el ejemplo, usamos repetidamente el comando echo para crear un aviso al usuario. El comando read también tiene la capacidad de crear un aviso mientras acepta entradas del usuario. La sintaxis para usar un aviso en el comando read es:

read -p "Tu aviso: " 

Para simplificar nuestro código anterior, podemos reconstruir el código a:

#!/bin/bash  
read -p "Tu nombre: " fname  
read -p "Tu apellido: " lname  
echo "¡Hola $fname $lname! Estoy aprendiendo a crear scripts de shell."

Otro beneficio del comando read es que el aviso del comando está justo después del texto y no en la línea siguiente.

El comando read también se puede usar para aceptar contraseñas. A diferencia de las entradas ordinarias, las contraseñas están enmascaradas para proporcionar seguridad. La sintaxis para aceptar una contraseña es:

read -s -p "tu aviso" 

Realizando aritmética simple usando el shell

Además de aceptar entradas y mostrar salidas, el shell bash también tiene una opción de aritmética incorporada. La tabla a continuación resume los operadores aritméticos incorporados del shell Bash.

OperadorDescripciónSintaxisUso
+Sumaa=$((b+c))Suma el valor de b y c y lo almacena en la variable a
-Restaa=$((b-c))Resta el valor de c de b y lo almacena en la variable a
*Multiplicacióna=$((b*c))Multiplica el valor de b y c y lo almacena en la variable a
/Divisióna=$((b/c))Divide el valor de b entre c y lo almacena en la variable a
%Móduloa=$((b%c))Realiza la división módulo de b y c y lo almacena en la variable a
++Pre-incremento$((++aa))Incrementa el valor de la variable a inmediatamente
++Post-incremento$((a++))Incrementa el valor de la variable a y refleja los cambios en la siguiente línea
Pre-decremento$((–a))Decrementa el valor de la variable a inmediatamente
Post-decremento$((a–))Decrementa el valor de la variable a y refleja los cambios en la siguiente línea
Exponenciación$((a2))Eleva el valor de a a la potencia de 2
+=Más igual$((a+=b))Suma el valor de a y b y lo almacena en la variable a
-=Menos igual$((a-=b))Resta el valor de b de a y lo almacena en la variable a
*=Por igual$((a*=b))Multiplica el valor de a y b y lo almacena en la variable a
/=División igual$((a/=b))Divide el valor de a entre b y lo almacena en la variable a
%=Módulo igual$((a%=b))Realiza la división módulo entre a y b y lo almacena en la variable a

Ten en cuenta que cada vez que realizas una instrucción aritmética, todas nuestras variables estarán encerradas con un signo de dólar y dobles paréntesis. Al hacer esto, el intérprete trata los valores de nuestras variables como números enteros. Sin ello, el intérprete trata los valores de la variable como una cadena. Para tener un ejemplo, ve el script a continuación:

#!/bin/bash  
 read -p "Ingresa int1: " a  
 read -p "Ingresa int2: " b  
 echo $((a+b))  
 c=$a+$b  
 echo $c

Cuando ejecutamos nuestro ejemplo, la línea $((a+b)) suma los valores del usuario que están almacenados en las variables a y b respectivamente, mientras que c=$a+$b trata las variables a y b como cadenas.

Conclusión

Hemos cubierto cómo aceptar entradas y almacenarlas en una variable y cómo realizar operaciones aritméticas en scripting de shell bash. En la próxima parte, presentaremos estructuras de control y particularmente la estructura de decisión.

Referencias:

El Proyecto de Información de Linux. (2007). Recuperado el 29 de abril de 2015, de Linfo.org: http://www.linfo.org/

Cooper, M. (n.d.). Guía Avanzada de Scripting en Bash. Recuperado el 29 de abril de 2015, de http://www.tldp.org/LDP/abs/html/

Variables de Entorno. (n.d.). Recuperado el 29 de abril de 2015, de Documentación de Ubuntu: https://help.ubuntu.com/community/EnvironmentVariables

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.