|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre à l'essai
![]() Inscription : décembre 2011 Messages : 10 ![]() |
Bonjour,
je rencontre une colle sur un petit script de sauvegarde de fichier : Code :
pour chaque * (correspondant a un dossier) j obtiens cp: cannot create /zone/*/root/var/yp/src/netgroup.save.20111219-1234: No such file or directory alors que j'ai faits le script de test suivant qui fonctionne bien : Code :
merci |
||||
|
|
10
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() Laurent WillemsExpert Stop/Start Inscription : septembre 2002 Messages : 2 551 ![]() |
Salut,
Je suppose que tu souhaites faire la copie chaque fichier netgroup dans leur repertoire respectif? Code :
__________________
Alea Jacta Test! |
||
|
|
30
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : décembre 2011 Messages : 10 ![]() |
Merci beaucoup , cela fonctionne.
Ou avais-je péché ? cela vient du "*" ? |
|
|
10
|
|
|
#4 |
|
Membre actif
![]() Inscription : avril 2004 Messages : 91 ![]() |
oui , tu ne peux pas créer un fichier avec comme un * dans le chemin car la wildcard matche avec plusieurs possibilités.
Grosso modo, ton script disait de faire : Pour chaque zone de 1 à x , copier le netgroup dans une des zones comprises entre 1 et x. Le script ne peut pas déterminer de quelle zone il s'agit(le * du for n'est pas le même que le * du cp, ce n'est pas une variable) L'algo de Mygale permet de créer la copie dans le même dossier que le fichier source, en récupérant explicitement ce dossier avec la commande dirname.
__________________
First, they ignore you. Then, they laught at you.Then, they fight you. Then, you win. Mohandas Gandhi |
|
|
20
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : décembre 2011 Messages : 10 ![]() |
ok, merci a vous 2 pour vos explications, on y voit plus clair en effet.
Dernière question, si jamais je souhaite copier uniquement mon fichier quand il ne fait pas 0 octet, dois je rajouter une condition dans la boucle ? En gros j aimerais mutualiser les 2 scripts. |
|
|
10
|
|
|
#6 | |||
|
Expert Confirmé Sénior
![]() Laurent WillemsExpert Stop/Start Inscription : septembre 2002 Messages : 2 551 ![]() |
Salut,
man bash Tu peux tester la taille d'un fichier via l'option suivante: Citation:
Code :
__________________
Alea Jacta Test! |
|||
|
|
20
|
|
|
#7 | ||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
heu…
Code :
|
||
|
|
11
|
|
|
#8 | |
|
Membre actif
![]() Inscription : avril 2004 Messages : 91 ![]() |
Citation:
Donc comme le disait Mygale, le -s suffit.
__________________
First, they ignore you. Then, they laught at you.Then, they fight you. Then, you win. Mohandas Gandhi |
|
|
|
20
|
|
|
#9 |
|
Membre à l'essai
![]() Inscription : décembre 2011 Messages : 10 ![]() |
Effectivement, dans mon premier post j ai fait le test -s verifiant que le fichier n'est pas vide, merci mygale mais ce qui me pose probleme c'est le fait de le copier si et seulement si il n'est pas vide.
le code que tu m'a mis (mygale) fait la meme chose que celui que j'ai mis, je voulais juste l'inclure dans le script de copie. je verifie la presence des mes fichier, tous ceux qui sont different de la taille 0 Octet, je les copie (car inutile de coipier un fichier vide). |
|
|
10
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 071 ![]() |
J'ai repris Mygale1978, car si test -s échoue, on ne peut pas savoir si le fichier existe.
Donc, dire «Ce fichier existe mais est vide.» pourrait induire en erreur les prochains lecteurs. |
|
|
10
|
|
|
#11 |
|
Membre actif
![]() Inscription : avril 2004 Messages : 91 ![]() |
OK, j'étais dans le sujet donc je ne voyais pas l'utilité de la clarification.
Merci pour les futurs lecteurs
__________________
First, they ignore you. Then, they laught at you.Then, they fight you. Then, you win. Mohandas Gandhi |
|
|
00
|
|
|
#12 | |||
|
Expert Confirmé Sénior
![]() Laurent WillemsExpert Stop/Start Inscription : septembre 2002 Messages : 2 551 ![]() |
Merci pour la rectification N_BAH.
Citation:
- tu as inversé les deux instructions => "-s" teste si le fichier à une taille > 0 octes et renvoie true si c'est le cas or dans ton cas tu dis que le fichier est vide... - tu dois tester la variable $f et pas fichier. - il devrait suffir de remplacer l'echo par le cp que je t'ai fourni précédemment. Code :
__________________
Alea Jacta Test! |
|||
|
|
20
|
|
|
#13 | ||
|
Membre à l'essai
![]() Inscription : décembre 2011 Messages : 10 ![]() |
Ok, donc cela donnerai:
Code :
|
||
|
|
10
|
Copyright © 2000-2012 - www.developpez.com