Return to Snippet

Revision: 6566
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
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
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