Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia |
linux:bash:shellvariables [18/11/2022 11:18] – [resumen expansion] mate | linux:bash:shellvariables [01/10/2024 03:53] (actual) – [Operaciones sobre cadenas] mate |
---|
= 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 |
| |
+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 |
* ''$ 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 |