linux:bash:arrays

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

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] matelinux: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>linux bash}}+~~NOTOC~~ 
 +{{tag>linux bash pendiente wiki}}
 /via: [[http://www.thegeekstuff.com/2010/06/bash-array-tutorial/]] /via: [[http://www.thegeekstuff.com/2010/06/bash-array-tutorial/]]
 +
 +<callout type="info" title="más información de interés (arrays indirection)" icon="true">http://wiki.bash-
 +hackers.org/syntax/arrays?rev=1534920675</callout>
 +<callout type="info" title="más información de interés (arrays asociativos)" icon="true">https://www.artificialworlds.net/blog/2012/10/17/bash-associative-array-examples/</callout>
 +
 +== declaración e inicialización
 +<code bash; indices numéricos>
 +declare -a array=(valor0 'valor uno' 'valor dos')
 +</code>
 +<code bash; asociativo>
 +declare -A array=( [indice1]=valor0 [indice2]='valor uno' [indice3]='valor dos')
 +# es necesario una versión 4+ de BASH para disponer de Arrays asociativos
 +</code>
 +
  
 == declaración y asignación == declaración y asignación
Línia 15: Línia 28:
 </code> </code>
  
-== 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, a "0"
 +array=(valor1 valor2 valor3) 
 +array=([0]=valor1 1=valor2 2=valor3) 
 +array=([cadena]=valor1 [cadena2]=valor2) 
 +array+=(valor5 valor6) # añade 
 +array=("${otro_array[@]}")
 </code> </code>
  
-== mostar array/elementos/subcadenas +== recuperación 
-  * todo el array: ''echo ·${array[@]}''+^Sintaxis ^ Descripción ^ 
 +| **${ARRAY[N]}** | recupera el elemento N  | 
 +| **${ARRAY[S]}** | recupera el elemento S en arrays **asociativos** | 
 +| **"${ARRAY[@]}"** | \\ Recupera todos los elementos\\ Si está entrecomillado, @ devuelve cada elemento, %%*%% devuelve un único resultado con todos los elementos.\\ Si no lo está, las dos devuelven lo mismo | 
 +| **${ARRAY[@]}** | ::: | 
 +| ** "${ARRAY[*]}"** | ::: | 
 +| **${ARRAY[*]}** | ::: | 
 +| **"${ARRAY[@]:N:M}"** | \\ De funcionamiento similar a la regla anterior, añade que devuelve desde el elemento N, M elementos | 
 +| **${ARRAY[@]:N:M}** | ::: | 
 +| **"${ARRAY[*]:N:M}"** | ::: | 
 +| **${ARRAY[*]:N:M}** | ::: | 
 + 
 +=== mostar array/elementos/subcadenas 
 +  * todo el array: ''echo ${array[@]}''
   * un elemento: ''echo ${array[n]}''   * un elemento: ''echo ${array[n]}''
   * del elemento n al m: ''echo ${array[@]:n:m}''   * del elemento n al m: ''echo ${array[@]:n:m}''
   * del elemento n, subcadena a-b: ''echo ${array[n]:a:b}''   * del elemento n, subcadena a-b: ''echo ${array[n]:a:b}''
 +  * todos los items del array: ''${array[*]}''
 +  * todos los índices del array:  ''${!array[*]}''
 +  * número de items:  ''${#array[*]}''
 +  * vía: [[http://www.linuxjournal.com/content/bash-arrays]]
 +
 +<button collapse="original-recuperacion" size="xs">original</button>
 +
 +<collapse id="original-recuperacion" collapsed="true">
 +
 +^Syntax ^Description ^
 +| **${ARRAY[N]}** | Expands to the value of the index ''N'' in the **indexed** array ''ARRAY''. If ''N'' is a negative number, it's treated as the offset from the maximum assigned index (can't be used for assignment) - 1  |
 +| **${ARRAY[S]}** | Expands to the value of the index ''S'' in the **associative** array ''ARRAY''. |
 +| **"${ARRAY[@]}"\\ ${ARRAY[@]}\\ "${ARRAY[*]}"\\ ${ARRAY[*]}** | Similar to [[scripting:posparams#mass_usage| mass-expanding positional parameters]], this expands to all elements. If unquoted, both subscripts ''*'' and ''@'' expand to the same result, if quoted, ''@'' expands to all elements individually quoted, ''*'' expands to all elements quoted as a whole. |
 +| **"${ARRAY[@]:N:M}"\\ ${ARRAY[@]:N:M}\\ "${ARRAY[*]:N:M}"\\ ${ARRAY[*]:N:M}** | Similar to what this syntax does for the characters of a single string when doing [[syntax:pe#substring_expansion| substring expansion]], this expands to ''M'' elements starting with element ''N''. This way you can mass-expand individual indexes. The rules for quoting and the subscripts ''*'' and ''@'' are the same as above for the other mass-expansions. |
 +
 +</collapse>
 +== metadata
 +^ Syntaxis ^Descripción ^
 +|**${#ARRAY[N]}** | Longitud del elemento N |
 +|**${#ARRAY[STRING]}** | idem en **asociativo** |
 +|**${#ARRAY[@]}**\\ **${#ARRAY[*]}**| Número de elementos |
 +|**${!ARRAY[@]}**\\ **${!ARRAY[*]}**| Extrae los índices del array, @ elemento a elemento, %%*%% en un bloque (desde BASH 3.0)|
  
-== longitud+=== longitud
   * del array: ''echo ${#array[@]}''   * del array: ''echo ${#array[@]}''
   * del primer elemento: ''echo ${#array}''   * del primer elemento: ''echo ${#array}''
   * del tercero: ''echo ${#array[2]}''   * del tercero: ''echo ${#array[2]}''
 +
 +<button collapse="original-metadata" size="xs">original</button>
 +
 +<collapse id="original-metadata" collapsed="true">
 +
 +^Syntax ^Description ^
 +|**${#ARRAY[N]}** |Expands to the **length** of an individual array member at index **N** (**stringlength**) |
 +|**${#ARRAY[STRING]}** | Expands to the **length** of an individual associative array member at index **STRING** (**stringlength**) |
 +|**${#ARRAY[@]}**\\ **${#ARRAY[*]}**|Expands to the **number of elements** in **ARRAY** |
 +|**${!ARRAY[@]}**\\ **${!ARRAY[*]}**|Expands to the **indexes** in **ARRAY** since BASH 3.0|
 +
 +</collapse>
 +
 +== destrucción
 +The [[commands/builtin/unset | unset]] builtin command is used to destroy (unset) arrays or individual elements of arrays.
 +
 +^Syntax ^Description ^
 +|''unset -v ARRAY''\\ ''unset -v ARRAY[@]''\\ ''unset -v ARRAY[*]'' |Destroys a complete array |
 +|''unset -v ARRAY[N]''|Destroys the array element at index ''N'' |
 +|''unset -v ARRAY[STRING]''|Destroys the array element of the associative array at index ''STRING'' |
 +
 +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
   * ''array=(` cat file `)''   * ''array=(` cat file `)''
- 
-== funky constructs 
-  * todos los items del array: ''${array[*]}'' 
-  * todos los índices del array:  ''${!array[*]}'' 
-  * número de items:  ''${#array[*]}'' 
-  * vía: [[http://www.linuxjournal.com/content/bash-arrays]] 
  
 == ejemplos == ejemplos
Línia 80: Línia 151:
  
 arr=("${array[@]}") arr=("${array[@]}")
-echo "After @ quoted expansion: ${#arr[*]}"+echo "After @ quoted expansion: ${#arr[@]}"
 for ix in ${!arr[*]} for ix in ${!arr[*]}
 do do
  • linux/bash/arrays.1526896893.txt.gz
  • Darrera modificació: 21/05/2018 03:01
  • per mate