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 siextglob
está habilitado )