Bash Script – Trabajo de variables Bash

Un script Bash es un archivo de texto sin formato. Este archivo contiene diferentes comandos para la ejecución paso a paso. Estos comandos se pueden escribir directamente en la línea de comandos, pero desde el punto de vista de la reutilización, es útil almacenar todos los comandos interrelacionados para una tarea específica en un solo archivo. Podemos usar ese archivo para ejecutar el conjunto de comandos una o más veces según nuestros requisitos. En programación, una variable es un valor que puede cambiar, dependiendo de las condiciones o de la información que se pasa al programa. Una variable en bash puede contener un número, un carácter o una string de caracteres. Aquí, en este artículo, vamos a discutir el funcionamiento de las variables dentro de Bash Scripting.

Las reglas para definir variables en Bash Scripts son las siguientes:

  • Los nombres de variables pueden contener letras mayúsculas, minúsculas, números, guiones bajos y dígitos.
  • Es una buena práctica usar letras mayúsculas para los nombres de variables dentro de los scripts de Bash.
  • No se permite el espacio.
  • No se pueden utilizar palabras clave predefinidas. Me gusta si, si no, etc.

El ejemplo más simple del uso de variables en Bash scripting se puede dar como:

Guión de ejemplo:

NAME="Satyajit Ghosh"
echo "His name is $NAME"

Producción:

His name is Satyajit Ghosh

El ejemplo anterior muestra una variable ‘ nombre ‘. Luego se usa con un comando de eco para mostrar su valor. Entonces, la sintaxis básica para escribir variables dentro de un Bash Script será:

Sintaxis de escribir variables:

VariableName=value
echo $VariableName #for accessing the value

Si queremos cambiar el valor de una variable, podemos hacerlo. La sintaxis básica para eso será:

VariableName=value
VariableName=newValue
echo $VariableName #for accessing the value

A continuación se muestra un ejemplo de lo mismo:

Guión de ejemplo:

AGE=10 #assigning a value
AGE=20 #changing the value
echo $AGE #display the value

Producción:

20

A continuación se muestra la representación del shell del terminal después de ejecutar el script:

 

Alcance variable

El alcance en un programa o script es una región donde las variables tienen su existencia. Si una variable se declara dentro de una función, generalmente es una variable local y si se declara fuera, entonces es una variable global. En el caso de un script bash, este concepto es un poco diferente, aquí cualquier variable, ya sea que esté escrita dentro o fuera de una función, por defecto es una variable global. Si queremos hacer una variable local, entonces necesitamos usar la palabra clave «local».

Un ejemplo de lo mismo se da a continuación:

Guión de ejemplo:

#!/bin/bash

var1="Apple" # global variable
myfun(){
    local var2="Banana" #local variable
    var3="Cherry" #global variable
    echo "The name of first fruit is $var1"
    echo "The name of second fruit is $var2"
}
myfun

echo "The name of first fruit is $var1"

# trying to access local variable
echo "The name of second fruit is $var2"
echo "The name of third fruit is $var3"

Salida de alcance variable:

The name of first fruit is Apple
The name of second fruit is Banana
The name of first fruit is Apple
The name of second fruit is 
The name of third fruit is Cherry

Aquí, en este ejemplo anterior, var2 es una variable local, por lo que cuando accedemos desde la función funciona bien, pero cuando intentamos acceder fuera de la función, nos da un resultado vacío en la salida.

Por otro lado, a diferencia de los lenguajes de programación, aunque var3 se define dentro de una función, sigue actuando como una variable global y se puede acceder a ella fuera de la función. A continuación se muestra la representación del shell del terminal después de ejecutar el script:

 

Operaciones sobre Variables

Podemos realizar operaciones numéricas y de strings en variables en scripts de Bash. Un ejemplo de lo mismo se da a continuación:

Guión de ejemplo:

NUM1=10 #variable 1
NUM2=5 #variable 2

# Numerical Operations over the variables
SUM=$(( $NUM1 + $NUM2 ))
SUBTRACT=$(( $NUM1 - $NUM2 ))
MULTIPLY=$(( $NUM1 * $NUM2 ))
DIVIDE=$(( $NUM1 / $NUM2 ))

echo "Addition : $SUM"
echo "Subtraction : $SUBTRACT"
echo "Multiply : $MULTIPLY"
echo "Divide : $DIVIDE"

# String Operations over the variables
NAME="GeeksforGeeks"
echo ${NAME:0:5} #substring extraction

FIRST_NAME="Isaac"
LAST_NAME="Newton"
echo ${FIRST_NAME}" "${LAST_NAME}

Salida de Operaciones en Variables:

Addition : 15
Subtraction : 5
Multiply : 50
Divide : 2
Geeks
Isaac Newton

En el ejemplo anterior, hemos realizado diferentes operaciones numéricas como suma, resta, multiplicación y división usando variables y también hemos realizado operaciones básicas de strings como concatenación y extracción de substrings. A continuación se muestra la representación del shell del terminal después de ejecutar el script:

 

Variables especiales

Hay algún tipo especial de variables presentes en bash. También se denominan variables internas o variables preestablecidas. A continuación se muestra la lista de algunos de ellos. 

Variables internas o variables preestablecidas Descripción
ps Cuántos parámetros de la línea de comandos se pasaron al script.
ps Todos los parámetros de la línea de comandos se pasan al script.
ps El estado de salida del último proceso que se ejecutó.
$$ El ID de proceso (PID) del script actual.
$USUARIO El nombre de usuario del usuario que ejecuta el script.
$NOMBRE DE HOST El nombre de host de la computadora que ejecuta el script.
$SEGUNDOS El número de segundos durante los que se ha estado ejecutando el script.
$ALEATORIO Devuelve un número aleatorio.
$LINENO Devuelve el número de línea actual del script.

Guión de ejemplo:

function Printname(){
    echo "First Name : ${1}"
    echo "Last Name : ${2}"
    echo "Full name is : $@"
}

Printname Satyajit Ghosh

echo "The name of the user : $USER"
echo "The hostname of the computer : $HOSTNAME"
echo "One random number is $RANDOM"
echo "The process ID of this script : $$"

Salida de Variables Especiales:

First Name : Satyajit
Last Name : Ghosh
Full name is : Satyajit Ghosh
The name of the user : satyajit
The hostname of the computer : satyajit-ThinkPad
One random number is 3239
The process ID of this script : 4301

A continuación se muestra la representación del shell del terminal después de ejecutar el script:

 

Argumentos de línea de comandos

Podemos proporcionar argumentos durante la ejecución del script y esas variables pueden controlar el comportamiento del script. Supongamos que tenemos un script de la siguiente manera:

Guión de ejemplo:

echo “El nombre es $1 y el apellido es $2”

Ahora, si lo ejecutamos así:

./scriptname.sh arg1 arg2

Veremos el siguiente resultado:

Salida de argumentos de línea de comandos:

El primer nombre es Satyajit y el apellido es Ghosh

A continuación se muestra la representación del shell del terminal después de ejecutar el script:

 

Sustitución de comandos

La sustitución de comandos nos permite tomar la salida de un comando o programa y guardarla como el valor de una variable. A continuación se muestra el ejemplo para el mismo –

Guión de ejemplo:

var=$( ls /usr | wc -l )
echo Total $var entries on usr directory

Salida de sustitución de comando:

Total 13 entries on usr directory

En el ejemplo anterior, hemos almacenado el resultado de ls /usr | wc -l , en una variable.

A continuación se muestra la representación del shell del terminal después de ejecutar el script:

 

Exportación de variables

Las variables están limitadas al proceso en el que fueron creadas. Si queremos que la variable esté disponible para otro script, entonces necesitamos exportar la variable. A continuación se muestra un ejemplo de lo mismo:

Guión de ejemplo:

Primero, guardaremos dos archivos gfg_one.sh y gfg_two.sh , luego proporcionaremos el permiso de ejecución y tendremos los siguientes códigos dentro de ellos:

código gfg_one.sh:

NUM1=10

echo "gfg_one : The initial value is $NUM1"

export NUM1
./gfg_two.sh

echo "gfg_one : The new value is $NUM1"

código gfg_two.sh:

echo "gfg_two : The initial value is $NUM1"

NUM1=20

echo "gfg_two : The new value is $NUM1"

Salida de exportación de variables:

gfg_one : The initial value is 10
gfg_two : The initial value is 10
gfg_two : The new value is 20
gfg_one : The new value is 10

Así que aquí, en este ejemplo, hemos exportado la variable NUM1 de gfg_one.sh y llamamos al script gfg_two.sh.

gfg_two.sh recibe la variable NUM1 y también muestra su valor (línea 2 de salida).

Ahora, podemos notar un problema en esta salida en la línea 4 de la salida, se supone que el valor es 20 pero no lo es. Debido a que una copia de la variable original pasó al segundo script y no al actual, cualquier cambio de valor en eso no se reflejará en la variable original. A continuación se muestra la representación del shell del terminal después de ejecutar el script:

 

Publicación traducida automáticamente

Artículo escrito por satyajit1910 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *