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:shellvariables [27/11/2019 15:39] – [Parameter substitution and Expansion] matelinux:bash:shellvariables [01/10/2024 03:53] (actual) – [Operaciones sobre cadenas] mate
Línia 1: Línia 1:
 = Special Shell Variables & Parameter Substitution and Expansion = Special Shell Variables & Parameter Substitution and Expansion
 +{{tag>linux}}{{tag>bash}}
 **$** es utilizado para expansión de parámetros y sustitución de comandos **$** es utilizado para expansión de parámetros y sustitución de comandos
  
Línia 43: Línia 44:
 === resumen expansion === resumen expansion
 /via: [[http://wiki.bash-hackers.org/syntax/pe?do=]]\\ /via: [[http://wiki.bash-hackers.org/syntax/pe?do=]]\\
 +/mas: [[https://tldp.org/LDP/abs/html/string-manipulation.html]]
 +
 Looking for a specific syntax you saw, without knowing the name? Looking for a specific syntax you saw, without knowing the name?
   * [[#simple_usage | Simple usage]]   * [[#simple_usage | Simple usage]]
Línia 89: Línia 92:
 +info: [[linux:bash:indirectreferences|]] +info: [[linux:bash:indirectreferences|]]
 == Operaciones sobre cadenas == Operaciones sobre cadenas
-/vía: [[http://www.marqueta.org/cadenas-en-bash/]] +  * /vía: [[http://www.marqueta.org/cadenas-en-bash/]] 
-^ expresión                           ^ Significado                                              ^ Ejemplo                                  ^ +  * /vía[[https://tldp.org/LDP/abs/html/string-manipulation.html]] 
-| ''${#parametro}''                   | longitud de parámetro                                    | echo ${#string}                          | +  /via: [[https://itsfoss.com/es/cadenas-bash/]]
-| ''${cadena:posición}''              | extrae subcadena desde posición                          | echo ${string:4}                         | +
-| ''${cadena:posición:longitud}''     | extrae subcadena desde posición la longitud solicitada   | echo ${string:4:7} ; echo ${string::-1} +
-| ''${cadena#subcadena}''             | eliminar subcadena del principio de la cadena            | echo ${string#substring                  | +
-| ''${cadena%subcadena}''             | eliminar subcadena del final de la cadena                | echo ${string%substring                  | +
-| ''${cadena/s1/s2}''                 | reemplazar primera aparicion s1 por s2                                                            | +
-| ''${cadena%%//%%s1/s2}''            | reemplazar todas aparicion s1 por s2                                                              | +
-| ''${cadena/#s1/s2}''                | reemplazar si hay coincidencia al princpio de cadena                                              | +
-| ''${cadena/%s1/s2}''                | reemplazar si hay coincidencia al final de cadena        |                                          | +
-| ''${cadena##*separador}''           | extrae el último elemento de la ristra, usando separador | %%data=foo,bar,baz;echo ${data##*,}%%    |+
  
 +^ expresión                        ^ Significado                                                ^ Ejemplo                                                       ^
 +| ''${#parametro}''                | longitud de parámetro                                      | echo ${#string}                                               |
 +| ''${cadena:posición}''           | extrae subcadena desde posición                            | echo ${string:4}                                              |
 +| ''${cadena:posición:longitud}''  | extrae subcadena desde posición la longitud solicitada     | echo ${string:4:7} ; echo ${string::-1}                       |
 +| ''${cadena#subcadena}''          | eliminar subcadena del principio de la cadena              | echo ${string#substring%%}%%                                  |
 +| ''${cadena%subcadena}''          | eliminar subcadena del final de la cadena\\ permite uso *  | echo ${string%substring%%}%%\\ echo ${string%substring*%%}%%  |
 +| ''${cadena/s1/s2}''              | reemplazar primera aparicion s1 por s2                                                                                   |
 +| ''${cadena%%//%%s1/s2}''         | reemplazar todas aparicion s1 por s2                                                                                     |
 +| ''${cadena/#s1/s2}''             | reemplazar si hay coincidencia al princpio de cadena                                                                     |
 +| ''${cadena/%s1/s2}''             | reemplazar si hay coincidencia al final de cadena          |                                                               |
 +| recorrido |
 +| ''${cadena##*separador}''        | extrae el último elemento de la ristra, usando separador   | %%data=foo,bar,baz;echo ${data##*,}%%                         |
 +| mayúsculas y minúsculas|
 +| ''${cadena^^}''                  | convierte a mayúsculas                                                                                                   |
 +| ''${cadena^}''                   | a mayúsculas el primer carácter                            |                                                               |
 +| ''${cadena,,}''                  | convierte a minúsculas                                                                                                   |
 +| ''${cadena,}''                   | a minúsculas el primer carácter                            |                                                               |
 +| ''${¢adena^^[chars]}''           | cambia chars a mayúsculas                                  |                                                               |
 +|                                  |                                                            |                                                               |
 +
 +=== comparaciones
   * ''$ a=foo; b=bar; [ "$a" = "$b" ] && echo "iguales" || echo "diferentes"'' <- espacios en condición importantes   * ''$ a=foo; b=bar; [ "$a" = "$b" ] && echo "iguales" || echo "diferentes"'' <- espacios en condición importantes
   * ''$ a=foo; b=bar; [ "$a" == "$b" ] && echo "iguales" || echo "diferentes"'' <- idem anterior   * ''$ a=foo; b=bar; [ "$a" == "$b" ] && echo "iguales" || echo "diferentes"'' <- idem anterior
Línia 109: Línia 124:
   * ''$ a=foo; b=bar; [ "$a" = "foo" -o "$b" = "bar" ] && echo "al menos 1 OK" || echo "ninguno OK"'' <- -o equivale OR   * ''$ a=foo; b=bar; [ "$a" = "foo" -o "$b" = "bar" ] && echo "al menos 1 OK" || echo "ninguno OK"'' <- -o equivale OR
  
 +=== parámetros
   * ${@:param:num_param} -> coge desde <param> el número de parámetros indicado por <num_param>   * ${@:param:num_param} -> coge desde <param> el número de parámetros indicado por <num_param>
     * permite acceder a parámetros más allá del 10     * permite acceder a parámetros más allá del 10
     * ''${@:7:2}'' -> devuelve $7 y $8     * ''${@:7:2}'' -> devuelve $7 y $8
     * @ indica todos -> (se podrá indicar otra cosa?)     * @ indica todos -> (se podrá indicar otra cosa?)
-  * recorrer una cadena palabra a palabra:<code> + 
-cadena="Esto es una cadena"+=== ejemplos 
 +  * recorrer una cadena palabra a palabra: 
 +    * <code bash>cadena="Esto es una cadena"
 arr=($cadena) arr=($cadena)
 for i in ${arr[@]}; do echo $i; done for i in ${arr[@]}; do echo $i; done
 </code> </code>
-<code>+    *<code bash>
 cadena="Esto es una cadena" cadena="Esto es una cadena"
 for i in ${cadena[@]}; do echo $i; done for i in ${cadena[@]}; do echo $i; done
Línia 146: Línia 164:
 == bash shell expansion == bash shell expansion
 ^ comando       ^ descripción ^ ^ comando       ^ descripción ^
-| ''${Var}''    | variable | +| ''${var}''    | variable | 
-| ''${!Var}''   | Indirect expansion | +| ''${!var}''   | Indirect expansion | 
-| ''${!Var@}''  | Prefix expansion | +| ''${!var@}''  | Prefix expansion | 
-| ''${!Var[@]}''| Array keys expansion | +| ''${!var[@]}''| Array keys expansion | 
-| ''${Var[@]}'' | Plain array expansion |+| ''${var[@]}'' | Plain array expansion |
  
 <code bash; title=indirection> <code bash; title=indirection>
Línia 156: Línia 174:
 var_one=a-value var_one=a-value
  
-echo "${varname}" # var_one +echo "${varname}"  # var_one 
-echo "${!varname} and ${var_one}" # a-value and a-value+echo "${var_one}"  # a-value 
 +echo "${!varname}"a-value
 </code> </code>
  
  • linux/bash/shellvariables.1574897956.txt.gz
  • Darrera modificació: 27/11/2019 15:39
  • per mate