Librerias de funciones en Bash - source
Posted by smcicoss on 24 Oct 2016 in La shell BASH
He descubierto la forma de realizar librerías de funciones en bash. Leyendo la página man del comando souce se entera uno de que dejando el fichero "fuente" en un directorio del PATH no necesitas especificar la ruta completa, solo el nombre, lo cual facilita mucho las cosas.
Y me puse manos a la obra.
He elejido el directorio /usr/local/bin que, al menos en mi distribución Linux (openSUSE), está incluido en el PATH y está vacío. Les doy la extensión .lib y no les asigno el atributo de ejecutable ni el encabezado #!/bin/bash .
Un ejemplo:
#funciones trim, ltrim y ftrim
#V 2.0
#autor: Simón Martínez
#fecha: 31/10/2016
function rtrim(){
#recorta espacios por la derecha
local CADENA=$1
echo "${CADENA%"${CADENA##*[![:space:]]}"}"
}
function ltrim(){
#recorta espacios por la izquierda
local CADENA=$1
echo "${CADENA#"${CADENA%%[![:space:]]*}"}"
}
function trim(){
#recorta espacios por la izquierda y por la derecha
local CADENA=$1
CADENA="${CADENA#"${CADENA%%[![:space:]]*}"}"
echo "${CADENA%"${CADENA##*[![:space:]]}"}"
}
Utilización:
#!/bin/bash
#manejo de cadenas
source "f_trim.lib"
algo=" Esto es una cadena ";
echo ["$algo"]
#rtrim - recorta espacios por la derecha
echo -e "\nrtrim"
echo "[$(rtrim "$algo")]"
#ltrim - recorta espacios por la izquierda
echo -e "\nltrim"
echo ["$(ltrim "$algo")"]
#trim - recorta espacios por la izquierda y por la derecha
echo -e "\ntrim"
echo ["$(trim "$algo")"]
¡Y funciona!