Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
linux:bash:arrays [21/05/2018 03:01] – [arrays bash] mate | linux:bash:arrays [09/10/2018 04:48] (actual) – [declaración e inicialización] mate | ||
---|---|---|---|
Línia 1: | Línia 1: | ||
- | ~~NOTOC~~ | ||
- | |||
= arrays bash | = arrays bash | ||
- | {{tag> | + | ~~NOTOC~~ |
+ | {{tag> | ||
/via: [[http:// | /via: [[http:// | ||
+ | |||
+ | <callout type=" | ||
+ | hackers.org/ | ||
+ | <callout type=" | ||
+ | |||
+ | == declaración e inicialización | ||
+ | <code bash; indices numéricos> | ||
+ | declare -a array=(valor0 'valor uno' 'valor dos') | ||
+ | </ | ||
+ | <code bash; asociativo> | ||
+ | declare -A array=( [indice1]=valor0 [indice2]=' | ||
+ | # es necesario una versión 4+ de BASH para disponer de Arrays asociativos | ||
+ | </ | ||
+ | |||
== declaración y asignación | == declaración y asignación | ||
Línia 15: | Línia 28: | ||
</ | </ | ||
- | == inicialización durante declaración | + | == + asignaciones |
<code bash> | <code bash> | ||
- | declare -a array=(valor0 'valor uno' 'valor dos') | + | array[n]=valor |
+ | array[cadena]=valor | ||
+ | array=valor # se asigna al índice 0 (en asociativos, | ||
+ | array=(valor1 valor2 valor3) | ||
+ | array=([0]=valor1 1=valor2 2=valor3) | ||
+ | array=([cadena]=valor1 [cadena2]=valor2) | ||
+ | array+=(valor5 valor6) # añade | ||
+ | array=(" | ||
</ | </ | ||
- | == mostar array/ | + | == recuperación |
- | * todo el array: '' | + | ^Sintaxis ^ Descripción ^ |
+ | | **${ARRAY[N]}** | recupera el elemento N | | ||
+ | | **${ARRAY[S]}** | recupera el elemento S en arrays **asociativos** | | ||
+ | | **" | ||
+ | | **${ARRAY[@]}** | ::: | | ||
+ | | ** " | ||
+ | | **${ARRAY[*]}** | ::: | | ||
+ | | **" | ||
+ | | **${ARRAY[@]: | ||
+ | | **" | ||
+ | | **${ARRAY[*]: | ||
+ | |||
+ | === mostar array/ | ||
+ | * todo el array: '' | ||
* un elemento: '' | * un elemento: '' | ||
* del elemento n al m: '' | * del elemento n al m: '' | ||
* del elemento n, subcadena a-b: '' | * del elemento n, subcadena a-b: '' | ||
+ | * todos los items del array: '' | ||
+ | * todos los índices del array: | ||
+ | * número de items: | ||
+ | * vía: [[http:// | ||
+ | |||
+ | <button collapse=" | ||
+ | |||
+ | < | ||
+ | |||
+ | ^Syntax ^Description ^ | ||
+ | | **${ARRAY[N]}** | Expands to the value of the index '' | ||
+ | | **${ARRAY[S]}** | Expands to the value of the index '' | ||
+ | | **" | ||
+ | | **" | ||
+ | |||
+ | </ | ||
+ | == metadata | ||
+ | ^ Syntaxis ^Descripción ^ | ||
+ | |**${# | ||
+ | |**${# | ||
+ | |**${# | ||
+ | |**${!ARRAY[@]}**\\ **${!ARRAY[*]}**| Extrae los índices del array, @ elemento a elemento, %%*%% en un bloque (desde BASH 3.0)| | ||
- | == longitud | + | === longitud |
* del array: '' | * del array: '' | ||
* del primer elemento: '' | * del primer elemento: '' | ||
* del tercero: '' | * del tercero: '' | ||
+ | |||
+ | <button collapse=" | ||
+ | |||
+ | < | ||
+ | |||
+ | ^Syntax ^Description ^ | ||
+ | |**${# | ||
+ | |**${# | ||
+ | |**${# | ||
+ | |**${!ARRAY[@]}**\\ **${!ARRAY[*]}**|Expands to the **indexes** in **ARRAY** since BASH 3.0| | ||
+ | |||
+ | </ | ||
+ | |||
+ | == destrucción | ||
+ | The [[commands/ | ||
+ | |||
+ | ^Syntax ^Description ^ | ||
+ | |'' | ||
+ | |'' | ||
+ | |'' | ||
+ | |||
+ | usar siempre comillas para encerrar la variable para evitar problemas con las variables glob | ||
== adición / eliminación / sustitución elementos | == adición / eliminación / sustitución elementos | ||
Línia 42: | Línia 119: | ||
== cargar contenido de un fichero | == cargar contenido de un fichero | ||
* '' | * '' | ||
- | |||
- | == funky constructs | ||
- | * todos los items del array: '' | ||
- | * todos los índices del array: | ||
- | * número de items: | ||
- | * vía: [[http:// | ||
== ejemplos | == ejemplos | ||
Línia 80: | Línia 151: | ||
arr=(" | arr=(" | ||
- | echo "After @ quoted expansion: ${#arr[*]}" | + | echo "After @ quoted expansion: ${#arr[@]}" |
for ix in ${!arr[*]} | for ix in ${!arr[*]} | ||
do | do |