jeudi 13 août 2009

shell lire un fichier de propriété



Problème

Vous voulez lire en shell un fichier de propriété similaire à celui-ci :

vi test.properties

VAR1=zest
VAR2=blop
VAR3=toto
MAIL=test@ty
ALIAS=monalias

Vous voulez aussi que les valeurs lues soient exploitables.


Solution

La solution consiste à lire ligne par ligne le fichier et à faire un export de
cette ligne. On peut aussi extraire ce qui est avant le = (Si on veut utiliser le nom de la variable)
L'exemple suivant utilise ksh mais on peut utiliser le shell qu'on veut. Cette exemple définit une méthode readFileProperties qui pour l'instant ne prend pas de paramêtre étant donné que c'est juste une méthode de test.


#!/bin/ksh
#-----------------------------
------------------------------
# Methode qui lit les proprietes d un fichier de properties.
#-----------------------------------------------------------

readFileProperties()
{
FILE="test.properties"

test -f $FILE
if [ $? -ne 0 ];then
echo "Fichier de propriete inexistant:$FILE"
exit 1
fi

echo "Lecture..."
while read ligne
do
if echo "$ligne" |grep "=" 1>/dev/null
then
VARNAME=`echo $ligne |cut -f1 -d=`
#echo $VARNAME
VARVALUE=`grep "^$VARNAME=" $FILE`
export $VARVALUE
#echo "export $VARVALUE"
fi
done < $FILE echo "VAR1:$VAR1" echo "VAR2:$VAR2" echo "VAR3:$VAR3" echo "ALIAS:$ALIAS" echo "MAIL:$MAIL" } readFileProperties

PoweredByGento