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