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ó

Següent revisió
Revisió prèvia
linux:bash:indirectreferences [28/06/2018 16:26] – creat matelinux:bash:indirectreferences [28/11/2018 09:46] (actual) – [asignación a variable referenciada indirectamente] mate
Línia 1: Línia 1:
 = Referencias indirectas = Referencias indirectas
-(indirect references)+== indirection, indirect references 
 +usar el valor de una variable para acceder al contenido de otra 
 +<code bash> 
 +# declaramos 2 variables 
 +export xyzzy=plugh ; export plugh=cave
  
 +echo ${xyzzy}  # normal, xyzzy to plugh -> plugh
 +
 +echo ${!xyzzy} # indirection, xyzzy to plugh to cave -> cave
 +</code>
 +
 +existen 2 casos en el que este comportamiento se ve modificado:
 +  * ''${!N*}'' : muestra las variables que empiecen por N
 +  * ''${!name[@]}''
 +
 +<code bash>
 +export myVar="hi"
 +echo ${!my*} # myVar
 +
 +export ${!my*}="bye"
 +echo $myVar # bye
 +</code>
 +
 +/vía: [[https://stackoverflow.com/questions/8515411/what-is-indirect-expansion-what-does-var-mean]]
 +
 +== asignación a variable referenciada indirectamente
 +<code bash>
 +#!/bin/bash
 +
 +AQUI_VALOR="GHJGHJGHJ"
 +VARIABLE=AQUI_VALOR
 +
 +read -p "Valor: " VALOR
 +echo ${VALOR}
 +
 +declare "${VARIABLE}=$VALOR"
 +# typeset equivalente a declare, soportado por otros shells (zsh)
 +# printf -v "${VARIABLE} '%s' "${VALOR}"
 +
 +echo $AQUI_VALOR        # $VALOR
 +echo "=="
 +echo $VARIABLE          # $VARIABLE
 +</code>
 +
 +/via: [[https://stackoverflow.com/questions/9938649/indirect-variable-assignment-in-bash]]
 +== + info
   * [[http://tldp.org/LDP/abs/html/ivr.html]]   * [[http://tldp.org/LDP/abs/html/ivr.html]]
   * [[https://stackoverflow.com/questions/8515411/what-is-indirect-expansion-what-does-var-mean]]   * [[https://stackoverflow.com/questions/8515411/what-is-indirect-expansion-what-does-var-mean]]
   * en arrays: [[https://stackoverflow.com/questions/11180714/how-to-iterate-over-an-array-using-indirect-reference]]   * en arrays: [[https://stackoverflow.com/questions/11180714/how-to-iterate-over-an-array-using-indirect-reference]]
  • linux/bash/indirectreferences.1530228404.txt.gz
  • Darrera modificació: 28/06/2018 16:26
  • per mate