Pages : 1
#1 Le 11/03/2018, à 02:51
- Nony80
script bash backup
Bonjour à tous,
J'apprends le bash depuis 10 jours et je dois trouver la solution à un exercice.
Je vous met en screen l'exercice, c'est plus simple qu'une explication hasardeuse :
Je vous laisse ci-dessous où j'en suis au niveau de mon code.
Pour le moment, mon code permet, en tapant la commande "analyseParam.sh fichier_test_01.txt fichier_test_02.txt fichier_test_03.txt", de sauvegarder les 3 fichiers avec l'extension .save.
C'est la seule chose qu'il fait correctement. ^^
Déjà est-ce que mon code est bien parti pour répondre à la demande ?
Constat :
Mon cat pose problème car il ajoute dans la variable 7 noms de fichiers (les 3 d'origines, les 3 en .save et "nomFichiers")
Je ne vois pas comment faire de l'extension .save celle par défaut.
Je ne sais pas comment faire en sorte qu'en ajoutant -e .uneextension, cette extension soit sélectionné pour les fichiers sauvegardés.
Je ne connais rien au mode verbose. (jamais vu en cours, j'ai cru voir que beaucoup s'en servaient pour dépanner).
Pouvez-vous m'aider ?
Anthony
Le script :
#!/bin/bash
while [ $# -ge 1 ]; do
case $1 in
"fichier_test_01.txt")
echo "Sauvegarde de fichier_test_01.txt en fichier_test_01.txt.save"
cat ${1} > nomFichiers
;;
"fichier_test_02.txt")
echo "Sauvegarde de fichier_test_02.txt en fichier_test_02.txt.save"
cat ${1} > nomFichiers
;;
"fichier_test_03.txt")
echo "Sauvegarde de fichier_test_03.txt en fichier_test_03.txt.save"
cat ${1} > nomFichiers
esac
cp "$1" "${1}.save"
shift 1
done
Dernière modification par Nony80 (Le 11/03/2018, à 17:22)
Hors ligne
#2 Le 11/03/2018, à 09:15
- cqfd93
Re : script bash backup
Bonjour,
Les fichiers doivent être passés en paramètres et le script les traiter quels que soient leurs noms même s'ils sont différents de ceux de ton test (c'est quand même un des intérêts d'un script), or là, tu codes les noms en dur dans ton case, ce script ne marchera que pour les 3 fichiers utilisés.
ps : mets ton script entre balises code (explications ici)
− cqfd93 −
Hors ligne
#3 Le 11/03/2018, à 13:25
- pingouinux
Re : script bash backup
Bonjour,
Le case te sert à tester les arguments optionnels, dont tu connais la liste. Si tu tombes sur un argument inconnu, c'est normalement un nom de fichier (tu peux vérifier que c'est bien le cas), que tu ajoutes à la liste des fichiers.
Suite :
Mon cat pose problème car il ajoute dans la variable 7 noms de fichiers (les 3 d'origines, les 3 en .save et "nomFichiers")
De quelle variable parles-tu ? Le script que tu montres ne peux pas faire ça.
Je ne vois pas comment faire de l'extension .save celle par défaut.
Je ne sais pas comment faire en sorte qu'en ajoutant -e .uneextension, cette extension soit sélectionné pour les fichiers sauvegardés.
Tu initialises une variable (extension, par exemple) en début de script, et tu la modifies si tu rencontres l'argument -e .
Je ne connais rien au mode verbose. (jamais vu en cours, j'ai cru voir que beaucoup s'en servaient pour dépanner).
Tu initialises une autre variable (verbose, par exemple) à false en début de script, et tu la mets à true si tu rencontres l'argument -v .
Dernière modification par pingouinux (Le 11/03/2018, à 13:40)
Hors ligne
#4 Le 11/03/2018, à 13:35
- Watael
Re : script bash backup
salut,
"concatén[er] [les noms des fichiers] dans une variable" , pas : concaténer le contenu des fichiers dans un fichier !
<HS>
j'aime beaucoup le « Pour plus de simplicité, utilisez les fichiers fournis »
comme si les connaissances requises pour réaliser le script ne permettaient pas de créer des fichiers
</HS>
Dernière modification par Watael (Le 11/03/2018, à 13:35)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 11/03/2018, à 13:37
- Watael
Re : script bash backup
@pingouinux
il faut vérifier que l'argument inconnu est un fichier : on ne peut pas sauvegarder un fichier qui n'existe pas.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#6 Le 11/03/2018, à 17:25
- Nony80
Re : script bash backup
Merci pour vos retours, ça va me permettre d'avancer.
Grâce à vous j'ai remarqué mes erreurs de compréhension, mais également de logique...
Et concernant l'initialisation d'une variable à la rencontre d'un paramètre, j'avoue que je ne voyais pas ça comme ça.
Aller, j'y retourne.
Hors ligne
Pages : 1