Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 :
1520733075-enonce.png

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) smile


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 :

Nony80 #1 a écrit :

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
roll
</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. smile

Hors ligne