Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#1 Le 13/11/2012, à 18:49

H6r6tiqu6

[Résolu]Passer d'une ligne de commande à un fichier .sh

Bonsoir à tous,
Il y a deux mois, j'ai mis au point mon script de backup de ma clé USB, utilisant rsync, et affichant un petit message de fin.
Malheuresement, je n'arrive pas à le répartir sur plusieur lignes. Le voici :

#!/bin/bash
date >> logs.txt 
rsync -aorz --verbose --stats --progress /Volumes/SLAANESH/ /Users/admin/backup_SLAANESH && echo "Backup effectué avec succès, revenez nous voir bientôt"

(Oui c'est un script pour un OS X, mais vos tomates volerons plus tard).

Comme vous pouvez le voir, la deuxième commande, elle prend de la place, et j'aimerais savoir si il était possible de la placer sur plusieurs lignes, je pense notamment au niveau du && echo.

Vos suggestions ?

(Au passage, je réfléchit encore à une boucle if pour créer le dossier de backup si il n'existe pas, mais mes connaissance en bash sont assez sommaires, et je n'arrive pas à trouver de manuel sur les tests logiques en bash).

Dernière modification par H6r6tiqu6 (Le 16/11/2012, à 14:10)

Hors ligne

#2 Le 13/11/2012, à 18:50

Spitfire 95

Re : [Résolu]Passer d'une ligne de commande à un fichier .sh

Un \ en fin de ligne il me semble.
Sinon j'ajouterai un [modéré] en plus à la fin... Spécial OS X quoi.

edit modo : merci d'éviter ce genre de commandes, même pour plaisanter. Il se peut qu'un lecteur moins averti lise le fil à l'avenir et lance la commande.

Dernière modification par nesthib (Le 13/11/2012, à 19:04)


Trisquel GNU/Linux 6.0 / Fedora 19 & rawhide.
joueur ryzom et wesnoth
Développeur livewallpaper
Membre déserteur et traître de la brigade des S.

Hors ligne

#3 Le 13/11/2012, à 18:54

H6r6tiqu6

Re : [Résolu]Passer d'une ligne de commande à un fichier .sh

j'y penserais quand j'aurais un ordi à moi, mais pour l'instant, je suis un peu obligé de faire avec le matos familial...

Hors ligne

#4 Le 13/11/2012, à 19:06

pingouinux

Re : [Résolu]Passer d'une ligne de commande à un fichier .sh

Bonjour,

[ -d /Users/admin/backup_SLAANESH ] || mkdir /Users/admin/backup_SLAANESH
rsync -aorz --verbose --stats --progress /Volumes/SLAANESH/ /Users/admin/backup_SLAANESH && \
echo "Backup effectué avec succès, revenez nous voir bientôt"

En ligne

#5 Le 13/11/2012, à 19:22

H6r6tiqu6

Re : [Résolu]Passer d'une ligne de commande à un fichier .sh

Super cool pingouinux ! merci beaucoup !

Dernier petit ajout pour faire mon bonheur : ajouter un

|| echo "backup échoué, recommence, ou vérifie que t'as pas encore foiré un truc"

Je le fait suivre, ou serais-je obligé de faire un if ?

Hors ligne

#6 Le 13/11/2012, à 19:32

pingouinux

Re : [Résolu]Passer d'une ligne de commande à un fichier .sh

rsync -aorz --verbose --stats --progress /Volumes/SLAANESH/ /Users/admin/backup_SLAANESH && \
echo "Backup effectué avec succès, revenez nous voir bientôt" || \
echo "backup échoué, recommence, ou vérifie que t'as pas encore foiré un truc"

En ligne

#7 Le 14/11/2012, à 00:50

PengouinPdt

Re : [Résolu]Passer d'une ligne de commande à un fichier .sh

Normalement si je ne me trompe pas :

#!/bin/bash

date >> logs.txt 

rsync -aorz --verbose --stats --progress /Volumes/SLAANESH/ /Users/admin/backup_SLAANESH

if test $? -eq 0; then
echo "Backup effectué avec succès, revenez nous voir bientôt"
fi

Hors ligne

#8 Le 14/11/2012, à 07:40

pingouinux

Re : [Résolu]Passer d'une ligne de commande à un fichier .sh

On n'est même pas obligé d'utiliser $? :

if rsync -aorz --verbose --stats --progress /Volumes/SLAANESH/ /Users/admin/backup_SLAANESH
then
   echo "Backup effectué avec succès, revenez nous voir bientôt"
else
   echo "backup échoué, recommence, ou vérifie que t'as pas encore foiré un truc
fi

En ligne

#9 Le 14/11/2012, à 12:42

PengouinPdt

Re : [Résolu]Passer d'une ligne de commande à un fichier .sh

Pas obligé certes, mais c'est la manière propre, voire sûre de récupérer l'information système ...

Peut s'écrire aussi ainsi :

if [ $? -eq 0 ]; then

Après oui, ta solution est fonctionnelle ;-)
(Et, personnellement, j'en reste sur ma solution...)

Dernière modification par PengouinPdt (Le 14/11/2012, à 12:47)

Hors ligne

#10 Le 14/11/2012, à 12:51

pingouinux

Re : [Résolu]Passer d'une ligne de commande à un fichier .sh

Il est vrai qu'utiliser $? permet d'adapter le traitement aux différents codes d'erreur.

En ligne

#11 Le 14/11/2012, à 19:21

Totor

Re : [Résolu]Passer d'une ligne de commande à un fichier .sh

PengouinPdt a écrit :

Pas obligé certes, mais c'est la manière propre, voire sûre de récupérer l'information système ...

Les 2 solutions sont exactements équivalentes. Et ta solution ne récupère pas plus d'information système.
Les 2 seuls intérêt à exploiter $? sont :
- de confronter le statut de la commande à plusieurs valeurs (ce qu'indique pingouinux)
- conservation / pérennisation / sauvegarde / stockage de la valeur du statut retourné en vu de son exploitation par la suite par le même ou par tout autre traitement

Ce qui ne semble absolument pas être le cas dans le contexte présent....


-- Lucid Lynx --

Hors ligne

#12 Le 21/11/2012, à 23:27

H6r6tiqu6

Re : [Résolu]Passer d'une ligne de commande à un fichier .sh

Merci à tous.
J'ai ouvert une discussion pour partager le script final : http://forum.ubuntu-fr.org/viewtopic.ph … #p11593931

Hors ligne

Haut de page ↑