GNU/Linux >> Tutoriales Linux >  >> Linux

Maneras inusuales de usar variables dentro de scripts Bash

Probablemente esté al tanto de las variables en las secuencias de comandos de shell Bash.

Al igual que otros lenguajes de programación y secuencias de comandos, utiliza variables para almacenar los datos y luego hacer referencia a ellos más adelante en comandos futuros.

name="Linux Handbook"
echo "Hello $name!"

E imprimirá "Hello Linux Handbook!".

Fuera del ejemplo anterior, también hay una cantidad sorprendentemente grande de cosas que puede hacer con las variables, como completar un valor predeterminado cuando la variable no está configurada y asignar múltiples valores a una sola variable.

Permítanme mostrarles estos usos inusuales y avanzados de variables en bash scripting.

Usando matrices

Excluyendo el ejemplo anterior, el tipo de variable más común que encontrará en Bash son las matrices:

name=("Linux Handbook" "It's FOSS")

El ejemplo anterior asigna tanto Linux Handbook y It's FOSS como los valores para el name variables.

Sin embargo, ¿cómo haces para acceder a cada valor?

Si ejecuta echo $name , verá que imprime el primer valor, Linux Handbook . Para acceder a los otros valores, deberá usar una sintaxis diferente para las variables.

Para comenzar a extraer los otros valores, comencemos familiarizándonos con lo siguiente:

echo "Hello ${name}!"

Esta es la base de lo que le permitirá obtener todos los valores de la variable y también lo que le permitirá realizar el resto de los métodos para interactuar con las variables a lo largo del resto de este artículo.

Volviendo al ejemplo anterior, puedes usar el ${variable[number]} sintaxis para extraer un determinado elemento de una variable:

echo "Hello ${name[1]}!"

Este imprimirá "¡Hola, es FOSS!"

Si aún no pudo ver en el ejemplo anterior, el primer elemento de la matriz en realidad comienza en 0 en lugar de 1.

Así que para sacar el Linux Handbook valor, sacaría el elemento en la posición 0:

echo "Hello ${name[0]}!"

Del mismo modo, simplemente omitiendo el [number] part simplemente lo hace predeterminado al primer elemento de la matriz (que está en el índice 0).

Índice solo significa la posición del elemento en la matriz. Asimismo, el índice 0 es el elemento 0 dentro de la matriz.

Y esos conforman todos los tipos de variables que encontrarás dentro de Bash.

Ahora veamos cómo puede trabajar y modificar la salida de esas variables cuando las llamamos.

Establecer el valor cuando una variable no está configurada

Puede hacer que una variable vuelva por defecto a una determinada cadena cuando una variable no está configurada de esta manera:

${variable:-string}

Toma este ejemplo:

echo "Hello ${name:-nobody}!"

Dado que la variable name no está configurado, se establecerá de forma predeterminada en nobody y el comando anterior imprimirá "¡Hola nadie!".

Si la variable se establece de antemano, se utilizará su valor:

name="Linux Handbook"
echo "Hello ${name:-nobody}!"

El comando anterior imprime "Hello Linux Handbook!"

Establecer el valor cuando una variable es ya configurado

También puede configurar una variable para que devuelva un determinado valor cuando la variable es colocar. Esto haría que la variable imprima una determinada cadena cada vez que esté configurada y no imprima nada cuando no lo esté.

La sintaxis de este método es similar a la anterior, pero usa el + firmar en lugar de - .

${variable:+string}

Tome este ejemplo donde el nombre de la variable no está establecido. Por lo tanto, no imprimirá nada para esa parte variable y el resultado del comando será "¡Hola!"

echo "Hello ${name:+person}!"

Modifique el ejemplo anterior y configure la variable name . Con este método especial, no utilizará el valor ya establecido y utilizará el que proporcionó.

name="Linux Handbook"
echo "Hello ${name:+person}!"

El comando anterior imprimirá "¡Hola persona!".

Probablemente encontrará más casos de uso con ${variable:-string} sintaxis, como algunos de los beneficios de ${variable:+string} ya se puede lograr con otras herramientas como las pruebas ([] ) operador:

Referencias indirectas a variables

El siguiente ejemplo utilizará la siguiente sintaxis:

${!variable}

Este es un poco más complejo en su funcionamiento, pero tiene sentido después de ver cómo funciona:

name="Linux Handbook"
variable="name"

echo "Hello ${!variable}!"

Imprimirá "Hello Linux Handbook".

Ese ! carácter antes del nombre de la variable hace que se sustituya el nombre de la variable normal, pero luego usa el nombre de eso trate de encontrar la variable relevante.

Asimismo:

  • variable se sustituye por la cadena name , seguido de:
  • name siendo sustituido por su valor de Linux Handbook .

Encontrar la longitud de una variable

Usemos el método anterior, pero intercambiemos el ! carácter para # :

${#variable}

El uso de este método imprimirá la longitud de la variable, pero actuará ligeramente diferente dependiendo de si la variable es una cadena o una matriz.

Usar esa sintaxis en una cadena hará que la variable sea sustituida por la cantidad de caracteres en la cadena.

variable="name"
echo "Length is ${#variable}."

Imprimirá 4. Pero, por otro lado, usarlo en una matriz imprimirá la cantidad de elementos dentro de la matriz, es decir, el tamaño de la matriz, que aquí es 2.

variable=("name" "word")
echo "Length is ${#variable}."

Cadenas en minúsculas y mayúsculas

Por último, puede escribir en mayúsculas y minúsculas una cadena usando el ^ y , operadores respectivamente.

Los proporciona al final del nombre de la variable de esta manera:

# Capitalizes
${variable^}
${variable^^}

# Lowercases
${variable,}
${variable,,}

¿Cuál es la diferencia entre proporcionar uno y dos de los personajes?

Proporcionar solo uno (es decir, ${variable^} ) hará que solo se modifique la primera letra, mientras proporciona dos (${variable^^} ) hará que se modifique toda la cadena.

El siguiente ejemplo imprime Name en lugar de name :

variable="name"
echo "${variable^}"

Pero este imprime NAME :

variable="name"
echo "${variable^^}"

Del mismo modo, también puede imprimir variables en minúsculas.

El siguiente ejemplo imprimirá wIDEname :

variable="WIDEname"
echo "${variable,}"

Y este imprimirá widename :

variable="WIDEname"
echo "${variable,,}"

Resumiendo

Estas son solo algunas de las formas en que puede usar variables dentro de Bash. Puede encontrar varias formas más de interactuar con las variables dentro de la documentación de Bash sobre la expansión de variables.

¿Tiene alguna pregunta sobre cómo funcionaron los ejemplos anteriores, o algo simplemente no funciona bien? Siéntete libre de dejar algo de eso en la sección de comentarios a continuación.


Linux
  1. Cinco formas de usar operadores de redirección en Bash

  2. Manejo de errores en scripts Bash

  3. ¿Usar la extensión .sh o .bash para scripts Bash?

  4. ¿Usar variables dentro de la expansión {} sin `eval`?

  5. Alias ​​con variable en bash

Diferencia entre la definición de variables Bash con y sin exportación

Bash Scripting - Variables explicadas con ejemplos

Cómo usar el comando echo en Bash Scripts en Linux

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

Tutorial de variables Bash:6 ejemplos prácticos de variables locales y globales de Bash

¿Cómo usar Linux Bash Shell dentro de Windows 10?