Uso y proceso de variables en shell scripts
Las variables en los shell scripts pueden ser tratadas sin usar cut, sed, awk… Vamos a ver unos ejemplos usando bash, pero funcionan igual en la mayoría de shells.
Suponiendo que la variable var tiene el siguiente contenido:
export var="ejemplo-prueba-systemadmin.es"
Podemos ver como tratarla como $var y como ${var} es lo mismo:
# echo $var
ejemplo-prueba-systemadmin.es
# echo ${var}
ejemplo-prueba-systemadmin.es
Pero en el caso que queramos añadir una cadena al final sin espacio deberemos usar ${var}, sino la shell no interpreta el nombre de la variable:
# echo ${var}lol
ejemplo-prueba-systemadmin.eslol
# echo $varlol
# echo $var lol
ejemplo-prueba-systemadmin.es lol
Mediante el uso de ${var:posición} podemos recordar una cadena (substring) desde una posición:
# echo ${var:8}
prueba-systemadmin.es
También podemos especificar un tamaño del bloque a cortar mediante ${var:posición:tamaño}
# echo ${var:8:6}
prueba
Mediante el uso de ${var#patrón} podemos recordar una cadena desde delante. Mediante la repetición de # indicamos que no se pare a primer substring que cumpla el patrón, sino que procese toda la cadena:
# echo ${var#*-}
prueba-systemadmin.es
# echo ${var##*-}
systemadmin.es
En el caso de querer recorrer la cadena desde detras hacia adelante deberemos usar % en lugar de #:
# echo ${var%-*}
ejemplo-prueba
# echo ${var%%-*}
ejemplo
También se pueden realizar substituciones sin usar sed mediante el uso de ${var/buscar/reemplazar}:
# echo ${var/-/.}
ejemplo.prueba-systemadmin.es
Repitiendo la barra se realiza la substitución de forma global:
# echo ${var//-/.}
ejemplo.prueba.systemadmin.es
Para realizar substituciones solo a principio o final de cadena también lo podremos hacer. Mediante # indicamos a principio de cadena:
# echo ${var/#e/X}
Xjemplo-prueba-systemadmin.es
Y con % indicamos fin de cadena:
# echo ${var/%s/X}
ejemplo-prueba-systemadmin.eX
Relacionados
Imprimir
3. November 2009 at 11:16 am :
Estupendo blog, continua así!
23. November 2009 at 6:40 pm :
Muy bueno el blog, muy útil la información
13. January 2010 at 5:57 am :
Perfecto !