Revision: 6566
Updated Code
at May 30, 2008 19:09 by Juanje
Updated Code
### Expansión de variables con ${} ###
## Valor por defecto
# Si no está definida una variable, se usa un valor predeterminada. Si está definida,
# se usa su valor
echo ${NAME:-Pepe}
# -> Pepe
NAME="Juanje"
echo ${NAME:-Pepe}
# -> Juanje
## Asignar valor por defecto
# Asigna un valor a la variable, pero sólo si está ntiene ya algún valor.
NAME=""
echo $NAME
# ->
echo ${NAME:=Pepe}
# -> Pepe
echo $NAME
# -> Pepe
echo ${NAME:=Juanje}
# -> Pepe
## Muestra error si no existe la variable (No si está vacia o no)
# Podemos poner un mensaje personalizado al error
echo ${X?}
# -> -bash: X: parameter null or not set
echo ${X?La variable X no exite}
# -> -bash: X: La variable X no exite
X=""
echo ${X?La variable X no exite}
# ->
X="Algo"
echo ${X?La variable X no exite}
# -> Algo
## Usar un valor alternativo, si ya existe la variable y tiene algún valor.
echo ${Y:+Contenido alternativo}
# ->
Y=""
echo ${Y:+Contenido alternativo}
# ->
Y="Algún contenido"
echo ${Y:+Contenido alternativo}
# -> Contenido alternativo
## Subcadenas del valor de la variable
# :{inicio}:{tamaño
# Si no se pone el tamañ, se coje la cadena desde el {inicio}, hasta el final
# Se empieza a contar por 0
TEXT="Un texto de ejemplo"
echo ${TEXT:3}
# -> texto de ejemplo
echo ${TEXT:3:5}
# -> texto
## Subcadena quitando del principio
# Con un sólo # se quitará la primera ocurrencia de lo que esté detrás
B="blablabla..."
echo ${B#bla}
# -> blabla...
echo ${B#*bla}
# -> blabla...
# Con 2 # se eliminarón cadenas más largas
echo ${B##bla}
# -> blabla...
echo ${B##*bla}
# -> ...
# Otro ejemplo práctico:
D="/srv/chroot/var/chroot/etc/apache"
echo ${D#*chroot}
# -> /var/chroot/etc/apache
echo ${D##*chroot}
# -> /etc/apache
## Subcadena quitando del final
# Con un sólo # se quitará última ocurrencia de lo que esté detrás
B="blablabla...blablabla"
echo ${B%bla}
# -> blablabla...blabla
echo ${B%bla*}
# -> blablabla...blabla
# Con 2 % se eliminarón cadenas más largas
echo ${B%%bla}
# -> blablabla...blabla
echo ${B%%bla*}
# ->
# Otro ejemplo práctico:
D="/srv/chroot/var/chroot/etc/apache"
echo ${D%chroot*}
# -> /srv/chroot/var/
echo ${D%%chroot*}
# -> /srv/
## Nombres de variables que empiecen por un prefijo
echo ${!U*}
# -> UID USER
echo ${!B*}
# -> B BASH BASH_VERSINFO BASH_VERSION
echo ${!BASH*}
# -> BASH BASH_VERSINFO BASH_VERSION
## Tamaño del contenido de una variable, en caracteres
X="Un texto cualquiera"
echo ${#X}
# -> 19
N=22435
echo ${#N}
# -> 5
# Sustituir una cadena
a=/etc/kung/foo
echo ${a/foo/fu}
# -> /etc/kung/fu
Revision: 6565
Updated Code
at May 30, 2008 19:07 by Juanje
Updated Code
### Expansión de variables con ${} ###
## Valor por defecto
# Si no está definida una variable, se usa un valor predeterminada. Si está definida,
# se usa su valor
echo ${NAME:-Pepe}
# -> Pepe
NAME="Juanje"
echo ${NAME:-Pepe}
# -> Juanje
## Asignar valor por defecto
# Asigna un valor a la variable, pero sólo si está ntiene ya algún valor.
NAME=""
echo $NAME
# ->
echo ${NAME:=Pepe}
# -> Pepe
echo $NAME
# -> Pepe
echo ${NAME:=Juanje}
# -> Pepe
## Muestra error si no existe la variable (No si está vacia o no)
# Podemos poner un mensaje personalizado al error
echo ${X?}
# -> -bash: X: parameter null or not set
echo ${X?La variable X no exite}
# -> -bash: X: La variable X no exite
X=""
echo ${X?La variable X no exite}
# ->
X="Algo"
echo ${X?La variable X no exite}
# -> Algo
## Usar un valor alternativo, si ya existe la variable y tiene algún valor.
echo ${Y:+Contenido alternativo}
# ->
Y=""
echo ${Y:+Contenido alternativo}
# ->
Y="Algún contenido"
echo ${Y:+Contenido alternativo}
# -> Contenido alternativo
## Subcadenas del valor de la variable
# :{inicio}:{tamaño
# Si no se pone el tamañ, se coje la cadena desde el {inicio}, hasta el final
# Se empieza a contar por 0
TEXT="Un texto de ejemplo"
echo ${TEXT:3}
# -> texto de ejemplo
echo ${TEXT:3:5}
# -> texto
## Subcadena quitando del principio
# Con un sólo # se quitará la primera ocurrencia de lo que esté detrás
B="blablabla..."
echo ${B#bla}
# -> blabla...
echo ${B#*bla}
# -> blabla...
# Con 2 # se eliminarón cadenas más largas
echo ${B##bla}
# -> blabla...
echo ${B##*bla}
# -> ...
# Otro ejemplo práctico:
D="/srv/chroot/var/chroot/etc/apache"
echo ${D#*chroot}
# -> /var/chroot/etc/apache
echo ${D##*chroot}
# -> /etc/apache
## Subcadena quitando del final
# Con un sólo # se quitará última ocurrencia de lo que esté detrás
B="blablabla...blablabla"
echo ${B%bla}
# -> blablabla...blabla
echo ${B%bla*}
# -> blablabla...blabla
# Con 2 % se eliminarón cadenas más largas
echo ${B%%bla}
# -> blablabla...blabla
echo ${B%%bla*}
# ->
# Otro ejemplo práctico:
D="/srv/chroot/var/chroot/etc/apache"
echo ${D%chroot*}
# -> /srv/chroot/var/
echo ${D%%chroot*}
# -> /srv/
## Nombres de variables que empiecen por un prefijo
echo ${!U*}
# -> UID USER
echo ${!B*}
# -> B BASH BASH_VERSINFO BASH_VERSION
echo ${!BASH*}
# -> BASH BASH_VERSINFO BASH_VERSION
## Tamaño del contenido de una variable, en caracteres
X="Un texto cualquiera"
echo ${#X}
# -> 19
N=22435
echo ${#N}
# -> 5
# Sustituir una cadena
a=/etc/kung/foo
echo ${a/foo/fu}
# -> /etc/kung/fu
Revision: 6564
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at May 30, 2008 18:53 by Juanje
Initial Code
### Expansión de variables con ${} ###
## Valor por defecto
# Si no está definida una variable, se usa un valor predeterminada. Si está definida,
# se usa su valor
echo ${NAME:-Pepe}
# -> Pepe
NAME="Juanje"
echo ${NAME:-Pepe}
# -> Juanje
## Asignar valor por defecto
# Asigna un valor a la variable, pero sólo si está ntiene ya algún valor.
NAME=""
echo $NAME
# ->
echo ${NAME:=Pepe}
# -> Pepe
echo $NAME
# -> Pepe
echo ${NAME:=Juanje}
# -> Pepe
## Muestra error si no existe la variable (No si está vacia o no)
# Podemos poner un mensaje personalizado al error
echo ${X?}
# -> -bash: X: parameter null or not set
echo ${X?La variable X no exite}
# -> -bash: X: La variable X no exite
X=""
echo ${X?La variable X no exite}
# ->
X="Algo"
echo ${X?La variable X no exite}
# -> Algo
## Usar un valor alternativo, si ya existe la variable y tiene algún valor.
echo ${Y:+Contenido alternativo}
# ->
Y=""
echo ${Y:+Contenido alternativo}
# ->
Y="Algún contenido"
echo ${Y:+Contenido alternativo}
# -> Contenido alternativo
## Subcadenas del valor de la variable
# :{inicio}:{tamaño
# Si no se pone el tamañ, se coje la cadena desde el {inicio}, hasta el final
# Se empieza a contar por 0
TEXT="Un texto de ejemplo"
echo ${TEXT:3}
# -> texto de ejemplo
echo ${TEXT:3:5}
# -> texto
## Subcadena quitando del principio
# Con un sólo # se quitará la primera ocurrencia de lo que esté detrás
B="blablabla..."
echo ${B#bla}
# -> blabla...
echo ${B#*bla}
# -> blabla...
# Con 2 # se eliminarón cadenas más largas
echo ${B##bla}
# -> blabla...
echo ${B##*bla}
# -> ...
# Otro ejemplo práctico:
D="/srv/chroot/var/chroot/etc/apache"
echo ${D#*chroot}
# -> /var/chroot/etc/apache
echo ${D##*chroot}
# -> /etc/apache
## Subcadena quitando del final
# Con un sólo # se quitará última ocurrencia de lo que esté detrás
B="blablabla...blablabla"
echo ${B%bla}
# -> blablabla...blabla
echo ${B%bla*}
# -> blablabla...blabla
# Con 2 % se eliminarón cadenas más largas
echo ${B%%bla}
# -> blablabla...blabla
echo ${B%%bla*}
# ->
# Otro ejemplo práctico:
D="/srv/chroot/var/chroot/etc/apache"
echo ${D%chroot*}
# -> /srv/chroot/var/
echo ${D%%chroot*}
# -> /srv/
## Nombres de variables que empiecen por un prefijo
echo ${!U*}
# -> UID USER
echo ${!B*}
# -> B BASH BASH_VERSINFO BASH_VERSION
echo ${!BASH*}
# -> BASH BASH_VERSINFO BASH_VERSION
## Tamaño del contenido de una variable, en caracteres
X="Un texto cualquiera"
echo ${#X}
# -> 19
N=22435
echo ${#N}
# -> 5
# Sustituir una cadena
a=/etc/kung/foo
echo ${a/foo/fu}
# -> /etc/kung/fu
Initial URL
Initial Description
Sorry, the comentaries are in spanish. I will translate them some day. The examples results are indicated with: # -> [result] Usually is the "echo" result
Initial Title
Vars expansions
Initial Tags
Bash
Initial Language
Bash