Et je block sur un opérateur mathématique...
Voici tout mon code:
#!/bin/bash
#définition du repetoire de stockage des fichiers FDB
directory=/usr/local/Novaprout
#Creation du rep DUPLIQUEE si il n'existe pas
if
test -d $directory/DUPLIQUEE
then
echo "le repertoire existe passage a l'etape suivante"
rm -f $directory/DUPLIQUEE/*.FBK
else
mkdir $directory/DUPLIQUEE
echo "Repertoire cree"
fi
#Comptage du nombre de fichier FDB
nbfichier=`ls $directory/*.FDB -1 | wc -l | bc `
echo $nbfichier
#test de l'existance de NOVAXEL.FDB
if
test -f $directory/NOVAXEL.FDB
then
echo "le fichier NOVAXEL.FDB existe"
/opt/firebird/bin/gbak -B -V -L $directory/NOVAXEL.FDB $directory/DUPLIQUEE/NOVAXEL.FBK -USER SYSDBA -PAS masterkey
let nbfichier2=$nbfichier-1
nbfichier3= printf $nbfichier2 | wc -c
if
(( $nbfichier3 == 1 ))
then
for (( i = 1 ; i <= $nbfichier2 ; i++ ))
do
echo "Welcome $i times"
/opt/firebird/bin/gbak -B -V -L $directory/Vol0000$nbfichier3.FDB $directory/DUPLIQUEE/NOVAXEL.FBK -USER SYSDBA -PAS masterkey
done
fi
else
echo "le fichier NOVAXEL.FDB n'existe pas"
fi
s'est lorsque j'essai de faire se test:
if
(( $nbfichier3 == 1 ))
then
for (( i = 1 ; i <= $nbfichier2 ; i++ ))
do
echo "Welcome $i times"
/opt/firebird/bin/gbak -B -V -L $directory/Vol0000$nbfichier3.FDB $directory/DUPLIQUEE/NOVAXEL.FBK -USER SYSDBA -PAS masterkey
done
fi
qu'il intreprete mal le :
(( $nbfichier3 == 1 ))
Need help please...
Au cas ou sa se vois pas je débute sous linux et en programation shell script...
# question bete
Posté par NeoX . Évalué à 1.
if ($toto == $titi)...
serait aussi efficace.
apparement il faut mettre des " pour qu'il evalue les variables
http://abs.traduc.org/abs-4.2.01-fr/ch07s03.html
if ( "$toto" == "$titi") ...
[^] # Re: question bete
Posté par thepuppetmaster . Évalué à 1.
et forcement: ==1 comment note found
[^] # Re: question bete
Posté par thepuppetmaster . Évalué à 1.
Aux final j'utilise:
if [ $nbfichier3 = "1" ]
Et sa marche
Merci encore...
# Divers
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 3.
nbfichier=`ls $directory/*.FDB -1 | wc -l | bc `
echo $nbfichier
Meilleure solution
set $directory/*.FDB
echo "Total fichiers: $#"
Et quel est l'objectif de ça:
let nbfichier2=$nbfichier-1
nbfichier3= printf $nbfichier2 | wc -c
if (( $nbfichier3 == 1 ))
Si c'est bien ce que je pense, cad vérifier qu'il y a moins de 10 fichiers dans le dossier la construction suivante est bien plus
adaptée:
shift
if [ $# -lt 10 ] ou
if test $# -lt 10
La suite me pose encore plus de problemes.
for (( i = 1 ; i <= $nbfichier2 ; i++ ))
do
echo "Welcome $i times"
/opt/firebird/bin/gbak -B -V -L $directory/Vol0000$nbfichier3.FDB $directory/DUPLIQUEE/NOVAXEL.FBK -USER SYSDBA -PAS masterkey
done
Tu fait une boucle qui execute plusieurs fois exactement la même commande
/opt/firebird/bin/gbak -B -V -L $directory/Vol0000$nbfichier3.FDB $directory/DUPLIQUEE/NOVAXEL.FBK -USER SYSDBA -PAS masterkey
qui sera toujours interprété comme cela (vu que jsute avant tu as un test ($nbfichier3 == 1):
/opt/firebird/bin/gbak -B -V -L $directory/Vol00001.FDB $directory/DUPLIQUEE/NOVAXEL.FBK -USER SYSDBA -PAS masterkey
personnellement si mes assomptions sont bonnes voici comment j'aurais fait cela:
#!/bin/bash
GBAK=/opt/firebird/bin/gbak
RM=/bin/rm
MKDIR=/bin/mkdir
#d
basedir=/usr/local/Novaprout
backupdir=$basedir/DUPLIQUEE
# Suppression ancien backup
$RM $backupdir
# creation rep. backup
$MKDIR $backupdir
#Comptage du nombre de fichier FDB
set $basedir/*.FDB
echo "Total fichiers: $#"
if [ $1 != "$basedir/NOVAXEL.FDB" ]; then
echo "Le fichier NOVAXEL.FDB n'existe pas"
echo "Le dossier $basedir n'est pas conforme aux specifications"
exit
fi
while [ $# -gt 1 ]; then
echo "Backing up $1 ...."
$GBAK -B -V -L $basedir/$1 $backupdir/NOVAXEL.FBK -USER SYSDBA -PAS masterkey
shift
done
Cela ne fonctionnera pas s'il y a d'autres fichiers que NOVAXEL.FBD et VOL*.FDB dans le dossier mais sinon ça doit être bon.
S'il y a d'autre fichiers dans ce dossier, alors il faut modifier le set comme cela:
set $basedir/NOVAXEL.* $basedir/VOL*
[^] # Re: Divers
Posté par thepuppetmaster . Évalué à 1.
Je vais tenter de m'expliquer un peut mieux...
En faite pour faire une sauvegarde des bases firebird, il faut executer une commande Gbak avec un certain nombre de paramettre dont le nom du fichier d'entrée et celui de sortit...
Techniquement il y a x fichier volxxxxx.FDB et obliguatoirement un NOVAXEL.FDB.
Sachant qu'il faut executer une commande par fichier j'ai pencer au comptage + une boucle + Traitemant du novaxel.fdb a part...
Et je block sur l'interpretation d'une ligne.
[^] # Re: Divers
Posté par NeoX . Évalué à 1.
techniquement simple
pour traité tous les fichier *.FDB du dossier $basedir et les mettre dans le dossier DUPLIQUEE/
evidemment je ne te file pas TOUT le script.
il peut etre necessaire de tester $i pour savoir si c'est le fichier NOVAXEL et faire le traitement si ce dernier est different des autres traitements.
[^] # Re: Divers
Posté par thepuppetmaster . Évalué à 1.
la syntaxe correct était
if [ $nbfichier3 = "1" ] tout attacher sans soter de ligne...
Merci encore et je ne pert pas de vue tes suggestions.
[^] # Re: Divers
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 2.
qu'est-ce qui ne marche pas, exactement ?
car c'est exactement ce que j'ai fait dans mon exemple.
Quelques question quand même:
1/ le fichier destination est -il toujours NOVAXEL.FDB ?
2/ l'ordre de traitement est-il important ?
Note qu'une erreur s'est effectivement glissée dans mon script:
while [ $# -gt 1 ]; then
echo "Backing up $1 ...."
$GBAK -B -V -L $basedir/$1 $backupdir/NOVAXEL.FBK -USER SYSDBA -PAS masterkey
shift
done
Cette erreur mise a part cette boucle prend tout les fichiers du dossier /usr/local/Novaxel et pour chacun execute la commande GBAK avec pour destination NOVAXEL.FBK (ca vient de ton script ça).
Si la destination doit être le nom du fichier source en .FBK alors ça donne ceci:
while [ $# -gt 1 ]; then
echo "Backing up $1 ...."
$base=`basename $1`
$GBAK -B -V -L $1 $backupdir/${base/.FDB/.FBK} -USER SYSDBA -PAS masterkey
shift
done
[^] # Re: Divers
Posté par thepuppetmaster . Évalué à 1.
Je test...
Dsl je suis en deplacement cette semaine encore donc risque de pas de reponce pendant un moment...
Encore merci
# man find
Posté par Joris Dedieu (site web personnel) . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.