Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia |
linux:bash:shellvariables [01/10/2024 03:15] – [Table] mate | linux:bash:shellvariables [01/10/2024 03:53] (actual) – [Operaciones sobre cadenas] mate |
---|
+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/]] |
| * /vía: [[https://tldp.org/LDP/abs/html/string-manipulation.html]] |
| * /via: [[https://itsfoss.com/es/cadenas-bash/]] |
^ expresión ^ Significado ^ Ejemplo ^ | ^ expresión ^ Significado ^ Ejemplo ^ |
| ''${#parametro}'' | longitud de parámetro | echo ${#string} | | | ''${#parametro}'' | longitud de parámetro | echo ${#string} | |
| ''${cadena/#s1/s2}'' | reemplazar si hay coincidencia al princpio de cadena | | | | ''${cadena/#s1/s2}'' | reemplazar si hay coincidencia al princpio de cadena | | |
| ''${cadena/%s1/s2}'' | reemplazar si hay coincidencia al final 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##*,}%% | | | ''${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 |