GNU/Linux >> Tutoriales Linux >  >> Linux

Shell Scripting Parte 2:Aceptar entradas y realizar operaciones aritméticas de Shell

¡Hola! Este artículo es la segunda parte de la serie de tutoriales de secuencias de comandos de Shell de Howtoforge. En este momento, asumo que ha leído la primera parte de la serie y sabe cómo crear un script simple y ejecutarlo. En la segunda parte, aprenderá cómo aceptar entradas del usuario y procesarlas a través de scripts de shell. ¡Empecemos!

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 a través de procesos en el shell. Las variables de entorno distinguen entre mayúsculas y minúsculas y siempre deben estar en mayúsculas para poder acceder a ellas.

La siguiente tabla muestra las variables de entorno comunes en el shell de Linux:

Para mostrar el valor de una variable de entorno, el usuario debe anteponer un signo de dólar ($) a la variable a la que se accede. Por ejemplo, para mostrar información del sistema como el directorio de trabajo actual, el usuario que inició sesión 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, use el comando env.

Cambiando valores de variables de entorno

Para proporcionar flexibilidad al sistema, estas variables de entorno se pueden manipular. Para establecer un valor para una variable de entorno, utilice una expresión de asignación (signo igual).

Ejemplo:

#!/bin/bash
echo $USER
USER="new user"
echo $USER

El resultado del script es:

Cuando ejecuta el script, al principio, $USER en la línea echo $USER muestra el valor de la variable USER. Al usar un operador de asignación (=) la variable USUARIO 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 se cierre nuestro script, la variable USER conservará su valor predeterminado.

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

Variables Shell

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

Reglas para nombrar variables de shell

Al igual que cualquier lenguaje de programación, existen 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 guión bajo.
  2. Solo debe contener caracteres alfanuméricos o un guión bajo.
  3. Las variables distinguen entre 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 el error "comando no encontrado" porque la variable 12abc comienza con un carácter numérico y la variable abc#* contiene caracteres no válidos. También demostramos que _abc y _ABC son variables diferentes y que la línea _ABC=2 no anula el valor de _abc.

Asignación de valores a variables de shell usando el comando de lectura:

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

read <variable_name>

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 mensaje de usuario con el comando echo.

#!/bin/bash
echo "Your first name: "
read fname
echo "Your last name:"
read lname 
echo "Hello $fname $lname ! I am learning how to create shell scripts."

El resultado es:

Tenga 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 usa en el comando de lectura. Sin embargo, en el ejemplo, usamos repetidamente el comando echo para crear un mensaje para el usuario. El comando de lectura también tiene la capacidad de crear un aviso al aceptar las entradas del usuario. La sintaxis del uso de indicador en el comando de lectura es:

read -p "Your prompt: " <variable_name>

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

#!/bin/bash
read -p "Your first name: " fname
read -p "Your last name: " lname
echo "Hello $fname $lname ! I am learning how to create shell scripts"

Otro beneficio del comando de lectura es que el símbolo del sistema está justo después del texto y no en la línea de abajo.

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

read -s -p "your prompt" <variable_name>

Realizar operaciones aritméticas simples usando el shell

Además de aceptar entradas y mostrar la salida, el shell bash también tiene una opción aritmética incorporada. La siguiente tabla resume los operadores aritméticos integrados del shell Bash.

Nombre de variable Uso
BASH Contiene la ruta completa del intérprete de comandos para scripts Bash
BASH_VERSIÓN Contiene la versión de lanzamiento de bash de la máquina utilizada actualmente
INICIO Contiene la ruta relativa del directorio de inicio.
NOMBRE DE REGISTRO Contiene el nombre de la cuenta del usuario actual conectado
TIPO OS Contiene una cadena que describe el sistema operativo actual de la máquina utilizada
RUTA Contiene una ruta absoluta separada por dos puntos de los archivos ejecutables en Linux
Personas con discapacidad Contiene el directorio de trabajo actual del shell
CONCHA Contiene el shell de línea de comando preferido
USUARIO Funciona de forma similar a LOGNAME. Contiene el nombre de la cuenta del usuario actualmente conectado
_ Contiene el nombre del comando utilizado recientemente en el shell

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

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

Cuando ejecutamos nuestro ejemplo, la línea $((a+b)) agrega los valores del usuario que se almacenan en las variables a y b respectivamente, mientras que c=$a+$b trata las variables a y b como una cadena.

Conclusión

Hemos cubierto cómo aceptar entradas y almacenarlas en una variable y cómo realizar operaciones aritméticas en scripts de shell bash. En la siguiente parte, presentaremos las 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. (s.f.). Guía avanzada de secuencias de comandos de Bash. Recuperado el 29 de abril de 2015, de http://www.tldp.org/LDP/abs/html/

Variables de entorno. (Dakota del Norte.). Obtenido el 29 de abril de 2015 de la documentación de Ubuntu: https://help.ubuntu.com/community/EnvironmentVariables


Linux
  1. Cómo establecer/crear variables de entorno y shell en Linux

  2. ¿La diferencia en el uso entre las variables de shell y las variables de entorno?

  3. Buscar y reemplazar en secuencias de comandos de shell

  4. Comportamiento de Arrays en bash scripting y zsh shell (¿Índice de inicio 0 o 1?)

  5. Atributo SPEC %files y variables de Shell

Shell Scripting Parte I:Primeros pasos con bash scripting

Shell Scripting Parte 2:Aceptar entradas y realizar operaciones aritméticas de Shell

Shell Scripting Parte 4:Estructuras de control de repetición

Bash Beginner Series #2:Comprender las variables en Bash Shell Scripting

Shell Scripting Parte 4:entrada, salida y redirección

Bash Scripting:cómo generar y formatear texto en Linux Shell

    Operador Descripción Sintaxis Uso
    + Adición a=$((b+c)) Agrega el valor de b y c y lo almacena en la variable a
    - Sustracción a=$((b-c)) Resta el valor de c de b y lo almacena en la variable a
    * Multiplicación a=$((b*c)) Multiplica el valor de b y c y lo almacena en la variable a
    / División a=$((b/c)) Divide el valor de b por c y lo almacena en la variable a
    % Módulo a=$((b%c)) Realiza la división de 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
    -- Predecremento $((--a)) Decrementa el valor de la variable a inmediatamente
    -- Post-decremento $((a--)) Disminuye el valor de la variable a y refleja los cambios en la siguiente línea
    ** Exponenciación $((a**2)) Elevar el valor de a al exponente de 2
    += Más igual $((a+=b)) Agrega 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
    *= Veces iguales $((a*=b)) Multiplica el valor de a y b y lo almacena en la variable a
    /= Barra igual $((a/=b)) Dividir el valor de a por b y almacenarlo en la variable a
    %= Mod-igual $((a%=b)) Realiza una división de módulo entre a y b y la almacena en la variable a