Enlever $ situé en fin de chaine s'il existe [HELP] [KSH][RESOLU] - Shell/Batch - Programmation
Marsh Posté le 10-12-2009 à 10:30:30
pb résolu
Voila le script final
#!/bin/ksh
clear
IsJob=0
IsApp=0
IsCyclique=0
IsDemande=0
FichierSortie=/home4/dpineau/blabla
JobName=$Line
IFS="
"
rm $FichierSortie
for Line in `cat -vte /home4/dpineau/export_vtom.exp`
do
#je teste si c'est une appli
if [ `echo $Line | grep app: | wc -l` -eq 1 ] ;
then
IsApp=1 ; IsJob=0
fi
# je teste si c'est un job
if [ `echo $Line | grep job: | wc -l` -eq 1 ] ;
then
IsJob=1 ; IsApp=0 ; IsCyclique=0 ; IsDemande=0
fi
# je teste si c'est un job
if [ `echo $IsJob` -eq 1 ] ;
then
#si c'est cyclique
if [ `echo $Line | grep cyclique=oui | wc -l` -eq 1 ] ;
then IsCyclique=1
fi
#si c'est demande
if [ `echo $Line | grep type_periodicite=demande | wc -l` -eq 1 ] ;
then IsDemande=1
fi
fi
# je teste si c'est un job
if ([ `echo $IsJob` -eq 1 ] && [ `echo $Line | grep -e '^[$]' | wc -l` -eq 1 ]) ;
# je teste si c'est un job et une demande
then if [ `echo $IsDemande` -eq 1 ] ;
then echo "toto\n">>$FichierSortie
# je teste si c'est un job et cyclique alors j'ecris "toto"
else if [ `echo $IsCyclique` -eq 1 ] ;
then
echo "toto\n">>$FichierSortie
# je teste si c'est un job et non-cyclique alors j'écris "tata"
else echo "tata\n">>$FichierSortie
fi
fi
fi
#on enleve les caracteres $ situés en fin de ligne
echo `expr $Line : "\(.*\).$"`>>$FichierSortie
done
Marsh Posté le 10-12-2009 à 09:44:10
Et voila le script complet qui marche merci a ceux qui m'ont aidé
#!/bin/ksh
clear
IsJob=0
IsApp=0
IsCyclique=0
IsDemande=0
FichierSortie=/home4/dpineau/blabla
JobName=$Line
IFS="
"
rm $FichierSortie
for Line in `cat -vte /home4/dpineau/BINDA.exp`
do
#je teste si c'est une appli
if [ `echo $Line | grep app: | wc -l` -eq 1 ] ;
then
IsApp=1 ; IsJob=0
fi
# je teste si c'est un job
if [ `echo $Line | grep job: | wc -l` -eq 1 ] ;
then
IsJob=1 ; IsApp=0 ; JobName=`echo $Line` ; IsCyclique=0 ; IsDemande=0
echo "JobName : " $JobName
fi
# je teste si c'est un job
if [ `echo $IsJob` -eq 1 ] ;
then
#si c'est cyclique
if [ `echo $Line | grep cyclique=oui | wc -l` -eq 1 ] ;
then IsCyclique=1
CurrentJob=`echo $JobName`
echo "CurrentJOb" $CurrentJob
fi
#si c'est demande
if [ `echo $Line | grep type_periodicite=demande | wc -l` -eq 1 ] ;
then IsDemande=1
fi
fi
# je teste si c'est un job, si c'est cyclique et si ca rempli ces deux condition j'ecris toto a la place de la ligne vide
echo "Cyclique :" $IsCyclique
echo "Demande : " $IsDemande
# je teste si c'est un job
if ([ `echo $IsJob` -eq 1 ] && [ `echo $Line | grep -e '^[$]' | wc -l` -eq 1 ]) ;
# je teste si c'est un job et une demande
then if [ `echo $IsDemande` -eq 1 ] ;
then echo "toto\n">>$FichierSortie
# je teste si c'est un job et cyclique alors j'ecris "toto"
else if [ `echo $IsCyclique` -eq 1 ] ;
then
echo "toto\n">>$FichierSortie
# je teste si c'est un job et non-cyclique alors j'écris "tata"
else echo "tata\n">>$FichierSortie
fi
fi
fi
echo $Line >>$FichierSortie
done
Mon dernier pb est d'enlever les $ généré par le cat -vte pour rendre le fichier export presentable
si qq1 sait manier cut ou sed une aide serait bienvenue
Message édité par hazzelthorn le 10-12-2009 à 10:44:11