#!/bin/bash KAZ_ROOT=$(cd "$(dirname $0)/.."; pwd) . "${KAZ_ROOT}/bin/.commonFunctions.sh" PRG=$(basename $0) usage() { echo "${PRG} [OPTIONS] [envname ...] Récupère les variables d'environnement présentes dans /kaz/secret/env-envname et crée des variables à partir de ces noms là. Les variables sont du type envname_NOMVARIABLE=valeur On peut passer plusieurs fichiers env, à partir du moment ou ils sont tous dans le même répertoire ! OPTIONS -h|--help Cette aide :-) -n|--simu SIMULATION -d foldername prend les envfiles dans un sous dossier /kaz/secret/foldername/ (pour les orgas !) Les variables seront du type foldername-envname_NOMVARIABLE=valeur " } for ARG in "$@"; do if [ -n "${DIRECTORYARG}" ]; then # après un -d SUBDIRECTORY="${ARG}" DIRECTORYARG= else case "${ARG}" in '-d' | '--directory' | '-f' | '--folder' | '--foldername') DIRECTORYARG="ON ATTEND UN REPERTOIRE APRES CA" ;; '-h' | '--help' ) usage && exit ;; '-n' | '--simu') SIMU="echo" ;; *) ENVFILES="${ENVFILES} ${ARG%}";; esac fi done NB_FILES=$(echo "${ENVFILES}" | wc -w ) if [[ $NB_FILES = 0 ]]; then usage exit 1 fi for ENVFILE in $ENVFILES; do FILENAME="$KAZ_KEY_DIR/env-$ENVFILE" VARNAME="$ENVFILE"_ if [ -n "${SUBDIRECTORY}" ]; then FILENAME="$KAZ_KEY_DIR/orgas/$SUBDIRECTORY/env-$ENVFILE" VARNAME="${SUBDIRECTORY}-${ENVFILE}_" fi if ! [ -f "$FILENAME" ]; then echo "$FILENAME does not exist." continue fi # formule magique qui crée des variables envname_NOMVARIABLE=la valeur trouvé (le sed vire les commentaires et les lignes vides) # on pourrait se contenter d'un "source env-file", mais avec un prefix dans les variables pour savoir ce qu'on manipule c'est bien aussi ... $SIMU export $(sed -e 's/#.*//' -e '/^\s*$/d' "$FILENAME" | awk -F= -v ENV="$VARNAME" '{output=output" "ENV$1"="$2} END {print output}') done