Pages : 1
#1 Le 05/09/2006, à 15:10
- guillaume75
Script BASH shell
Bonjour
j'essaie d'écrire un script en bash qui sera plus tard éxécuté via le cron mais je n'arrive pas à faire ce que je voudrais.
Ce script doit réaliser le téléchargement de 3 archives tgz via wget HTTP://url/file1.tgz et la sauvegarde des 3 archives dans une autre repertoire en renommant le fichier comme ceci nom-dd-mm-yyyy.tgz .
De plus afin de ne pas surcharger le disque il faut qu'il supprime les archives les plus anciènnes de manière à n'en garder que 5 de chaque.
voici mon script que je lance ainsi ./backup.sh domestica webdemo app2intg
1 #!/bin/bash -v -x
2
3 set -v
4 set -x
5
6 cd $HOME
7
8
9 for "$@" in domestica webdemo app2intg
10
11 do
12
13 wget http://192.168.1.7/CARRIBACKUPS/"$@"-today.tgz #ici c'est "$@" et pas "$...
14
15
16 RETVAL=$?
17
18
19 if [$RETVAL -ne 0]; then
20
21 exit
22
23 fi
24
25
26 today=`date +%d-%m-%Y`
27
28 mv "$@"-today.tgz /home/system/test/"$@"-${today}.tgz
29
30 nbtotal=`ls -lt /home/system/test/"$@"* | wc -l`
31
32
33 if [$nbtotal -gt 6]; then
34
35 nbtokeep=`ls -lt /home/system/test/"$@"* | head -n 6 | wc -l`
36
37 nbtodel=`expr $nbtotal - $nbtokeep`
38
39
40 cd $HOME/test
41
42
43 ls | tail -n $nbtodel | xargs rm -rf
44
45 fi
46
47 done
48
quand j'éxécute mon script voici ce qu'il me dit
backup.sh : ligne 47 :"$@" n'est pas un identifiant valide
Si qqun connait la solution à mon pb ou a un début de piste
merci infiniment
Hors ligne
#2 Le 05/09/2006, à 15:21
- kaworu
Re : Script BASH shell
Salut !
ta boucle for est étrange (non?), ne serai-ce pas plutot :
for i in $@
EDIT : ah non.
EDIT2 : arf, c'est quand même étrange.
Quand tu fait ta boucle, ta variable c'est "${$@}", mais quand tu l'apelle c'est avec $@ ...
Bon pk tu utilise $@ ? (pk pas comme ce que je propose plus haut ?)
EDIT3 :
essaye les balises de code, ça aide ^___^
#!/bin/bash -v -x
set -v
set -x
# déplacement
cd $HOME
if [ "$HOME" != "$PWD"]; then
exit 1
fi
# début de la boucle
for i in $@ ; do
# téléchargement / sauvegarde
today=`date +%d-%m-%Y`
wget "http://192.168.1.7/CARRIBACKUPS/${i}-${today}.tgz
if [ $? -ne 0 ]; then
exit 2
fi
mv "${i}-${today}.tgz" /home/system/test/
# vérification du nombre total et supression si besoin
nbtotal=`ls -lt "/home/system/test/${i}*" | wc -l`
if [$nbtotal -gt 6]; then
nbtokeep=`ls -lt "/home/system/test/${i}"* | head -n 6 | wc -l`
nbtodel=`expr $nbtotal - $nbtokeep` # let "nbtodel = nbtotal - nbtokeep"
cd $HOME/test
ls | tail -n $nbtodel | xargs rm -rf
fi
done
Dernière modification par kaworu (Le 05/09/2006, à 15:36)
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
Pages : 1