GNU/Linux >> Tutoriales Linux >  >> Linux

¿Paréntesis simple en la asignación de variables Bash?

Me preguntaba acerca de los paréntesis simples en bash. Sé que se usan para ejecutar comandos en subcapas y que se usan para crear matrices, pero ¿se usan para algo más?

Una cosa que me llamó la atención es que cuando usas la asignación de variables in, como

var=(hello)
echo $var    # hello

bash no genera un error ni nada, y la salida es la misma que si

var=hello

¿Estas dos definiciones de variables son iguales o hay alguna diferencia?

Respuesta aceptada:

En su caso paréntesis () se utilizan como definición de matriz, por ejemplo

a=(one two three)   # array definition
echo "${a}"         # print first element of array a
echo "${a[0]}"      # print first element of array a
echo "${a[1]}"      # print *second* element of array a
echo "${#a[@]}"     # print number of elements in array a

Si coloca una sola variable en la matriz, solo tiene una matriz con un solo elemento.

Para responder a su otra pregunta sobre si los paréntesis también se usan para cualquier otra cosa:hay muchas situaciones en bash que en combinación con otros personajes pueden ser usados ​​como:

  • sustitución de comandos:$()
  • sustitución de proceso:<() y >()
  • subcapa:(command)
  • evaluación aritmética:(())
  • definición de función:fun () { echo x; }
  • lista de patrones en global:?() , *() , +() , @() , !() (solo si extglob está habilitado )

Linux
  1. ¿Cómo crear una matriz de elementos únicos a partir de una cadena/matriz en Bash?

  2. Paréntesis en aritmética Expr:3 * (2 + 1)?

  3. Matriz en Bash no encontrada

  4. Alias ​​con variable en bash

  5. bash:coloque los archivos de lista en una variable y el tamaño de la matriz sea 1

Variable de exportación de bash

Arreglos bash

Matriz asociativa en Bash

Cómo establecer la variable de entorno en Bash

bash - coincidencia de variables que no distingue entre mayúsculas y minúsculas

Problemas con la variable bash que se expande con comillas simples