##---------------------------------------------------------------------------- ## Script : path.lib ## Module Puppet : gnc-script_core_dtsi ## Auteur : Emmanuel Confrere ## Date : 10-02-2016 ## Version : 2.0.0 ## Objet : Ajout d'un repertoire a une variable avec control d unicite. ## ## Fonction : fctpath ## ## detail : Certaines variables represente une liste de repertoire ## separes par un caractere significatif. C'est le cas pour ## les variables PATH, MANPATH, etc... ## Cette fonction permet la mise a jour de ce type de ## variable sans se poser la question de la redondance ## de l'information ou de l'existance du repertoire. ## L'appel de cette fonction doit etre suivi de quatre ## parametres : ## - 1 : le nom du repertoire a ajouter ## - 2 : le nom de la variable a mettre a jour ## - 3 : le separateur de champs utilise ## - 4 : le parametre "avant" si vous desirez ajouter ## le repertoire en debut de variable ## La variable est automatiquement exportee. # ---------------------------------------------------------------------------- # Mise a jour : # 1.0.0 19-08-2001 - Marc GRESSET - Creation # 1.0.0 10-02-2016 - Emmanuel Confrere - Integration au script du socle DTSI ##--------------------------------------------------------------------------- fctpath () { local V_PATH_NAME="${1}" local V_PATH_VAR="${2}" local V_PATH_SEPAR="${3}" local V_PATH_WHERE="${4}" eval V_PATH_CONTENU=\"\$\{"${V_PATH_VAR}"\}\" #- Suppression des caracteres V_PATH_SEPAR au debut et en fin de ligne V_PATH_CONTENU=`echo "${V_PATH_CONTENU}"|sed "s#^${V_PATH_SEPAR}##;s#${V_PATH_SEPAR}\\$##"` if [ -z "${V_PATH_NAME}" ] || [ -z "${V_PATH_VAR}" ] || [ -z "${V_PATH_SEPAR}" ] then echo "fct_path : Probleme sur les parametres :" echo "fct_path : \${V_PATH_NAME} = [ ${V_PATH_NAME} ]" echo "fct_path : \${V_PATH_VAR} = [ ${V_PATH_VAR} ]" echo "fct_path : \${V_PATH_SEPAR} = [ ${V_PATH_SEPAR} ]" return 1 else case ${V_PATH_SEPAR} in \.|\,|\;|\:|\!|\~|\@|\#|\%|\^) \ : ;; *) echo "fct_path : Probleme sur le separateur de champs." echo "fct_path : \${V_PATH_NAME} = [ ${V_PATH_NAME} ]" echo "fct_path : \${V_PATH_VAR} = [ ${V_PATH_VAR} ]" echo "fct_path : \${V_PATH_SEPAR} = [ ${V_PATH_SEPAR} ]" return 2 ;; esac fi # - Suppression du path si existe deja dans la variable case ${V_PATH_CONTENU} in *${V_PATH_SEPAR}${V_PATH_NAME}${V_PATH_SEPAR}* ) \ V_PATH_CONTENU=`echo ${V_PATH_CONTENU}|sed "s#${V_PATH_SEPAR}${V_PATH_NAME}${V_PATH_SEPAR}#${V_PATH_SEPAR}#"` ;; ${V_PATH_NAME}${V_PATH_SEPAR}* ) \ V_PATH_CONTENU=`echo ${V_PATH_CONTENU}|sed "s#${V_PATH_NAME}${V_PATH_SEPAR}##"` ;; *${V_PATH_SEPAR}${V_PATH_NAME} ) \ V_PATH_CONTENU=`echo ${V_PATH_CONTENU}|sed "s#${V_PATH_SEPAR}${V_PATH_NAME}##"` ;; ${V_PATH_NAME} ) V_PATH_CONTENU="" ;; esac # - Initialisation de la nouvelle variable if [ "${V_PATH_WHERE}" != "supp" ] then if [ -z "${V_PATH_CONTENU}" ] then V_PATH_CONTENU="${V_PATH_NAME}" elif [ "${V_PATH_WHERE}" = "avant" ] then V_PATH_CONTENU=${V_PATH_NAME}${V_PATH_SEPAR}${V_PATH_CONTENU} else V_PATH_CONTENU=${V_PATH_CONTENU}${V_PATH_SEPAR}${V_PATH_NAME} fi fi if [ ! -d "${V_PATH_NAME}" ] && [ ! -f "${V_PATH_NAME}" ] then #- Le repertoire specifier n existe pas unset V_PATH_NAME unset V_PATH_VAR unset V_PATH_SEPAR unset V_PATH_WHERE unset V_PATH_CONTENU return 2 else #- Export du nouveau Path eval ${V_PATH_VAR}=${V_PATH_CONTENU} eval export ${V_PATH_VAR} unset V_PATH_NAME unset V_PATH_VAR unset V_PATH_SEPAR unset V_PATH_WHERE unset V_PATH_CONTENU fi } typeset -Ffx fctpath