Ciertas shell propporcionan unas facilidades que pueden ser
útiles para ahorrar código en la
programación de guiones de shell, como son la
eliminación o extracción de subcadenas de una
variable.
${variable:inicio:longitud}
|
Extrae una subcadena de variable, partiendo de inicio y
de tamaño indicado por longitud. Si se omite
longitud toma hasta el fin de la cadena original.
$ A=abcdef
$ echo ${A:3:2}
de
$ echo ${A:1:4}
bcde
$ echo ${A:2}
cdef
|
Corta texto de variable si variable comienza por texto.
Si variable no comienza por texto variable se usa
inalterada. El siguiente ejemplo muestra el mecanismo de
funcionamiento:
$ A=abcdef
$ echo ${A#ab}
cdef
$ echo ${A#$B}
cdef
$ B=abc
$ echo ${A#$B}
def
$ echo ${A#cd}
abcdef
|
Corta texto de variable si variable termina por texto. Si
variable no termina por texto variable se usa inalterada.
Vemos un ejemplo:
$ PS1=$
$PS1="$ "
$ A=abcdef
$ echo ${A%def}
abc
$ B=cdef
$ echo ${A%$B}
ab
|
${variable/texto1/texto2}
${variable//texto1/texto2}
|
Sustituye texto1 por texto2 en variable. En la primera
forma, sólo se reemplaza la primera
aparición. La segunda forma hace que se sustituyan
todas las apariciones de texto1 por texto2.
$ A=abcdef
$ echo ${A/abc/x}
xdef
$ echo ${A/de/x}
abcxf
|