1) Oui, pour être plus clair, il faut un séparateur de commande, donc le ';' ou le '\n'.
2) Oui, on a dit qu'elles étaient inutiles ici.
1) Oui, pour être plus clair, il faut un séparateur de commande, donc le ';' ou le '\n'.
2) Oui, on a dit qu'elles étaient inutiles ici.
Cordialement.
ok, script modifié et fonctionnel... pour l'instant :
La partie support manquant, est-elle "lourde" ou "normale"...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 #!/bin/bash # # Ce script permet de faire une sauvegarde incrémentale manuelle avec "rsync" Date=$(date +%d-%m-%Y) Heure=$(date +%T) echo -e "Exécuter SOV1 ? [o/N]"; # Pour plus de lisibilité, la réponse par défaut est donnée en majuscule à la suite de la question. read -sn1; # Inutile d'entrer plus d'un caractère, ni d'appuyer sur la touche entrée. if [[ $REPLY =~ [yYoO] ]] # La variable REPLY est automatiquement créée par la fonction read du bash (builtins) then echo -e "\n Lancement sauvegarde à\n $Heure le $Date\n" else echo -e "\n Procédure SOV1 interrompue par l'utilisateur à $Heure le $Date\n"; echo -e "\n Sortie SOV1\n"; exit; fi # pour donner un nom "raccourci" (incluant le chemin) au fichier backuperror.log : backup=/home/bernard/bin/Sauvegardes/backuperrorSOV1.log # à noter l'usage des ">" : # Un seul ">" renvoie le contenu du terminal dans le fichier indiqué # en écrasant tout ce que contient déjà ce fichier. # ">>" renvoie le contenu du terminal sans écraser ce que contient déjà le fichier. # Le chiffre "2" suivi d'un seul ">" renvoie seulement les messages d'erreurs # générés par le processus dans le fichier indiqué en écrasant le contenu de ce fichier. # "2>>" renvoie les erreurs sans écraser le contenu du fichier. #SSD32Go if [[ "`df --output=source /media/bernard/ | tail -1`" != "`df --output=source /media/bernard/SSD32Go/ | tail -1`" ]] # vérifie que la chaine, résultat du premier df, est différente du deuxième df, si identique = support absent then echo -e "\n Synchronisation en cours sur SSD32Go\n" rsync --archive --partial --progress --delete-during --stats /home/bernard/.thunderbird /media/bernard/SSD32Go/ 2>> "$backup"; retour_rsync=$? echo echo -e " rsync a retourné ${retour_rsync}" echo else echo -e "connectez le support manquant, puis validez par o ? [o/N]"; # support manquant, le connecter ou pas... read -sn1; if [[ $REPLY =~ [yYoO] ]] then echo -e "\n Lancement sauvegarde à\n $Heure le $Date\n" ; echo -e "\n Synchronisation en cours sur SSD32Go\n" rsync --archive --partial --progress --delete-during --stats /home/bernard/.thunderbird /media/bernard/SSD32Go/ 2>> "$backup"; retour_rsync=$? else echo -e "\n !!! abandon sauvegarde sur support SSD32Go absent !!!\n"; fi fi # if [ ${retour_rsync} -ne 0 ]; then echo -e "y a un pb sur support SSD32Go"; fi #SSHD500-1 if [[ "`df --output=source /media/bernard/ | tail -1`" != "`df --output=source /media/bernard/SSHD500-1/ | tail -1`" ]] then echo -e "\n Synchronisation en cours sur SSHD500-1/\n" rsync --archive --partial --progress --delete-during --stats --exclude="/media" --exclude="/proc" --exclude="/sys" / /media/bernard/SSHD500-1/ 2>> "$backup"; retour_rsync=$? echo echo -e " rsync a retourné ${retour_rsync}" echo else echo -e "connectez le support manquant, SSHD500-1, puis validez par o ? [o/N]"; read -sn1; if [[ $REPLY =~ [yYoO] ]] then echo -e "\n Lancement sauvegarde à\n $Heure le $Date\n" ; echo -e "\n Synchronisation en cours sur SSHD500-1/\n" rsync --archive --partial --progress --delete-during --stats --exclude="/media" --exclude="/proc" --exclude="/sys" / /media/bernard/SSHD500-1/ 2>> "$backup"; retour_rsync=$? else echo -e "\n !!! abandon sauvegarde sur support SSHD500-1/ absent !!!\n"; fi fi # if [ ${retour_rsync} -ne 0 ]; then echo -e"y a un pb sur support SSHD500-1/"; fi # Vérification des liens = faite # Insertion de la date à la fin de la liste d'erreur si le fichier backuperror # n'est pas vide (c'est à dire s'il y a des erreurs), ce que vérifie l'option "-s" : if [ -s "$backup" ]; then date >> "$backup"; fi # Mise à jour de l'heure Heure=$(date +%T) echo -e "\n Sauvegarde terminée à\n $Heure le $Date\n" # ---- fin du script ----
y aurait-il la possibilité de faire plus "simple"... ?
edit 1 : suppression de toutes les couleurs + mise en "page" + remplacement des tabulations par des espaces...
Dernière modification par Invité ; 26/04/2018 à 22h50.
Salut,
Toutes ces couleurs, c'est bien, mais on met ça à la fin quand c'est fonctionnel.
Là, ça fait beaucoup de ligne de code pour rien et ça ne donne pas envie de le lire pour essayer de résoudre les dysfonctionnements AMHA.
Cordialement.
Quel éditeur utilises-tu pour éditer ton code?
L'indentation présente un mélange de tabulations et d'espaces, ce qui fait que ce code hétérogène est difficile à lire à cause de son indentation.
Si l'éditeur le permet, ce serait bien de lui demander de tout indenter correctement. Sinon tu peux aussi lui demander de remplacer chaque tabulation par 4 ou 8 espaces (suivant le décalage utilisé).
J'ai supprimé toutes les couleurs et "fioritures" dans le script.
j'utilise geany comme éditeur.
tabulation à 4 espaces !
Dernière modification par Invité ; 26/04/2018 à 22h52.
voici le script que j'ai modifié, ai "démaquillé" de mes fioritures et mon nom, remplacé par USER :
Qu'en pensez-vous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 #!/bin/bash # Ce script permet de faire une sauvegarde incrémentale manuelle avec "rsync" Date=$(date +%d-%m-%Y) Heure=$(date +%T) backup=/home/USER/bin/Sauvegardes/backuperrorSovTotale-1-a.log echo -e "Exécuter SOV2 ? [o/N]"; read -sn1; if [[ $REPLY =~ [yYoO] ]] then echo -e "\n\n Lancement sauvegarde à $Heure le $Date\n\n" else echo -e "\n Procédure SOV2 interrompue par utilisateur à $Heure le $Date\n"; echo -e "\n Sortie SOV2\n"; exit; fi #SSD32Go-1 if [[ "`df --output=source /media/USER/ | tail -1`" != "`df --output=source /media/USER/SSD32Go/ | tail -1`" ]] then echo -e "\n\n\n Synchronisation en cours sur SSD32Go\n\n" rsync --archive --partial --progress --delete-during --stats /home/USER/.thunderbird /media/USER/SSD32Go/ 2>> "$backup"; retour_rsync=$? echo echo -e " rsync a retourné ${retour_rsync}" echo else echo -e "connectez le support manquant, puis validez par o ? [o/N]"; read -sn1; if [[ $REPLY =~ [yYoO] ]] then echo -e "\n\n Lancement sauvegarde à $Heure le $Date\n\n" ; echo -e "\n\n\n Synchronisation en cours sur SSD32Go\n\n" rsync --archive --partial --progress --delete-during --stats /home/USER/.thunderbird /media/USER/SSD32Go/ 2>> "$backup"; retour_rsync=$? else echo -e "\n !!! abandon sauvegarde sur support SSD32Go absent !!!\n"; fi fi #SSHD500-1-2 if [[ "`df --output=source /media/USER/ | tail -1`" != "`df --output=source /media/USER/SSHD500-1/ | tail -1`" ]] then echo -e "\n\n\n Synchronisation en cours sur SSHD500-1\n\n" rsync --archive --partial --progress --delete-during --stats --exclude="/media" --exclude="/proc" --exclude="/sys" / /media/USER/SSHD500-1/ 2>> "$backup"; retour_rsync=$? echo echo -e " rsync a retourné ${retour_rsync}" echo else echo -e "connectez le support manquant, SSHD500-1, puis validez par o ? [o/N]"; read -sn1; if [[ $REPLY =~ [yYoO] ]] then echo -e "\n\n Lancement sauvegarde à $Heure le $Date\n\n" ; echo -e "\n\n\n Synchronisation en cours sur SSHD500-1\n\n" rsync --archive --partial --progress --delete-during --stats --exclude="/media" --exclude="/proc" --exclude="/sys" / /media/USER/SSHD500-1/ 2>> "$backup"; retour_rsync=$? else echo -e "\n !!! abandon sauvegarde sur support SSHD500-1 absent !!!\n"; fi fi #SSHD500-2-3 if [[ "`df --output=source /media/USER/ | tail -1`" != "`df --output=source /media/USER/SSHD500-2 | tail -1`" ]] then echo -e "\n\n\n Synchronisation en cours sur SSHD500-2\n\n" rsync --archive --partial --progress --delete-during --stats --exclude="/media" --exclude="/proc" --exclude="/sys" / /media/USER/SSHD500-2/ 2>> "$backup"; retour_rsync=$? echo echo -e " rsync a retourné ${retour_rsync}" echo else echo -e "connectez le support manquant, SSHD500-2, puis validez par o ? [o/N]"; read -sn1; if [[ $REPLY =~ [yYoO] ]] then echo -e "\n\n Lancement sauvegarde à $Heure le $Date\n\n" ; echo -e "\n\n\n Synchronisation en cours sur SSHD500-2\n\n" rsync --archive --partial --progress --delete-during --stats --exclude="/media" --exclude="/proc" --exclude="/sys" / /media/USER/SSHD500-2/ 2>> "$backup"; retour_rsync=$? else echo -e "\n !!! abandon sauvegarde sur support SSHD500-2 absent !!!\n"; fi fi #DD1To-4 if [[ "`df --output=source /media/USER/ | tail -1`" != "`df --output=source /media/USER/Sauv1To-a/ | tail -1`" ]] then echo -e "\n\n\n Synchronisation en cours sur Sauv1To-a\n\n" rsync --archive --partial --progress --delete-during --stats /home /media/USER/Sauv1To-a/SauvDdPrincipal1/ 2>> "$backup"; retour_rsync=$? echo echo -e " rsync a retourné ${retour_rsync}" echo else echo -e "connectez le support manquant, Sauv1To-a, puis validez par o ? [o/N]"; read -sn1; if [[ $REPLY =~ [yYoO] ]] then echo -e "\n\n Lancement sauvegarde à $Heure le $Date\n\n" ; echo -e "\n\n\n Synchronisation en cours sur Sauv1To-a\n\n" rsync --archive --partial --progress --delete-during --stats /home /media/USER/Sauv1To-a/SauvDdPrincipal1/ 2>> "$backup"; retour_rsync=$? else echo -e "\n !!! abandon sauvegarde sur support Sauv1To-a/ absent !!!\n"; fi fi #DD500Go-5 if [[ "`df --output=source /media/USER/ | tail -1`" != "`df --output=source /media/USER/Sauv500Go/ | tail -1`" ]] then echo -e "\n\n\n Synchronisation en cours sur Sauv500Go\n\n" rsync --archive --partial --progress --delete-during --stats /home /media/USER/Sauv500Go/SauvDdPrincipal2/ 2>> "$backup"; retour_rsync=$? echo echo -e " rsync a retourné ${retour_rsync}" echo else echo -e "connectez le support manquant, Sauv500Go, puis validez par o ? [o/N]"; read -sn1; if [[ $REPLY =~ [yYoO] ]] then echo -e "\n\n Lancement sauvegarde à $Heure le $Date\n\n" ; echo -e "\n\n\n Synchronisation en cours sur Sauv500Go\n\n" rsync --archive --partial --progress --delete-during --stats /home /media/USER/Sauv500Go/SauvDdPrincipal2/ 2>> "$backup"; retour_rsync=$? else echo -e "\n !!! abandon sauvegarde sur support Sauv500Go/ absent !!!\n"; fi fi if [ -s "$backup" ]; then date >> "$backup"; fi Heure=$(date +%T) echo -e "\n Sauvegarde terminée à $Heure le $Date\n" # ---- fin du script ----
J'ai supprimé, à la fin de chaque sauvegarde de support :
où j'obtenais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if [ "${retour_rsync}" -ne 0 ]; then echo -e $ROUGE "y a un pb sur support SSD32Go"; fi
étant dans l'incapacité de lui répondre, je l'ai... zou !
Code : Sélectionner tout - Visualiser dans une fenêtre à part /home/USER/MesScripts/SOV1.sh: ligne 56 : [: -ne : opérateur unaire attendu
mais, si vous y voyez une amélioration dans ces lignes, merci de m'indiquer ce "qu'il" attend...
j'ai encore un p'tit souci, mais il est "p'tit"... nous en discuterons après
Bonne fin de semaine Ensoleillée
Tu mens !
Si je lance ton script à midi et je pars faire un golf, je reviens à 19h pour répondre à la question Exécuter SOV2 ? [o/N] d'un "N" ferme et définitif, alors le script me dit que j'ai interrompu le script à midi.
C'est faux. Pourquoi mentir ? Es-tu un genre d'agent de la NSA payé pour introduire des backdoors dans les scripts ?
C'est la vraie indentation ? Si c'est aussi clair dans ton esprit que mal indenté dans ton texte, je comprends que tu aies des questions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if [[ $REPLY =~ [yYoO] ]] then echo -e "\n\n Lancement sauvegarde à $Heure le $Date\n\n" else echo -e "\n Procédure SOV2 interrompue par utilisateur à $Heure le $Date\n"; echo -e "\n Sortie SOV2\n"; exit; fi
Pourquoi "then" est avancé ?
Pourquoi "else" est sur-avancé ?
Ces 2 mots-clé ne sont-ils des éléments de la structure du "if" ?
Pourquoi les alternatives ne sont-elles pas au même niveau ?
Ne trouves-tu pas cela plus lisible ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if [[ $REPLY =~ [yYoO] ]] then echo -e "\n\n Lancement sauvegarde à $Heure le $Date\n\n" else echo -e "\n Procédure SOV2 interrompue par utilisateur à $Heure le $Date\n"; echo -e "\n Sortie SOV2\n"; exit; fi
Plutôt que de corriger une syntaxe impropre, tu supprimes le code ?étant dans l'incapacité de lui répondre, je l'ai... zou !
Et dans tes pulls ? Tu découpes la tache ?
S'il t'attaque sur le crochet (qui n'est qu'un raccourci pour la commande test) c'est probablement que la variable "$retour_rsync" est complètement vide.
D'où la faute de syntaxe.
Ça évite de voir que les variables de couleurs n'étaient pas protégées alors que c'était le premier conseil donné.J'ai supprimé toutes les couleurs
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
Merci pour tes retours
bon... j'suis démasqué
ceci plaisantait :
+ j'utilise geany, est-ce le bon éditeur ?
comment "faire" pour obtenir les indentations automatiques ?
+ j'ai changé la place de la sortie par l'utilisateur... est-ce cela qui fait que... ?
à moins que je n'ai oublié une commande dans la ligne, pour indiquer l'heure de la clôture réelle ?
+ la variable "$retour_rsync" est effectivement vide, lorsque c'est sans erreur...
+ toutes les variables, dont celles de couleur, devraient être double crochet ?
par exemple
VERT="\\033[1;32m"
deviendrait
"VERT"="\\033[1;32m"
c'est cela ?
Attention au vocabulaire :toutes les variables, dont celles de couleur, devraient être double crochet ?
- ( ) parenthèses ouvrantes et fermantes
- [ ] crochets ouvrants et fermants
- ' ' simple quotes (en anglais dans le texte)
- " " double quotes (en anglais dans le texte)
- « » guillemets (français)
Pas à ce moment-là. À ce moment-ci:toutes les variables, dont celles de couleur, devraient être double crochet ?
VERT="\\033[1;32m"
Code : Sélectionner tout - Visualiser dans une fenêtre à part "$VERT"
Un espagnol t'expliquerait mieux que moi que, si le point d'exclamation est avant la phrase, il s'écrit à l'envers.
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo -e "\n !!! abandon sauvegarde sur support SSHD500-2 absent !!!\n";
Alt+! ou Altgr+! ou Alt+173 selon les situations.
Remarque hautement nécessaire que j'avais oublié dans mon précédent post.
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo -e "\n ¡¡¡ abandon sauvegarde sur support SSHD500-2 absent !!!\n";
¡Olé!
Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.
Tu as parfaitement raison sur l'erreur de vocabulaire... j'ai lu, trop en biais...
j'ai rectifié, sur mon script, les doubles quotes des variables couleur
quant au point d'exclamation, j'en ai lu des significations... bouhhh
pour mi, je prends l'explication du code de la route :
danger, faire attention, etc...
cependant, merci pour la connaissance pour le ¡ espagnol, que je méconnaissais
Bon 1er Mai et Muguet
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager