[Bash] Exécution d'un tar par script bash [Résolu/Fermé]

Signaler
Messages postés
2
Date d'inscription
mardi 17 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007
-
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
-
Bonjour à tous,

En désespoir de cause, je me tourne vers la communauté pour tenter de résoudre mon problème :

Je veux faire exécuter un tar qui restaure des fichiers d'une archive au travers d'un script bash.

Pour cela, j'ai saisi dans un fichier texte ordinaire la liste des fichiers à restaurer. Je précise que les noms de fichiers comportent des blancs et des caractères accentués.

Dans mon script, je lance la commande suivante :

tar xvvfz test.tar.gz "nom du premier fichier avec des blancs et accentués" "nom du deuxième fichier avec blancs et accentués"

par le script, ça ne marche pas, les blancs sont pris comme séparateur par la commande tar.

Par contre, lorsque je tape la même commande au clavier, ça marche impeccable.

Quelqu'un a-t-il une idée ?

En vous remerciant, par avance, pour vos réponses ....

1 réponse

Messages postés
93
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
10 juillet 2008
3
Il faut que tu change la variable d'environnement IFS.
Celle-ci permet de déterminer qu'est ce qui sera considéré comme un separateur...par exemple l'espace...

si dans ton script, tu le modifie, n'oublie pas de le restaurer à la fin de ton script.

Regarde sur le net pour cette variable, tu y trouvera surement des exemples...
Pour moi, il y a cette piste...

Sinon: proteger ce que tu recupere par des ' par exemple et pas par des "...mais je suis pas sur que ca marche..

Voila...


Ps: ta commande tar comporte deux fois "v"... c pas tres normal je crois...
++
Messages postés
2
Date d'inscription
mardi 17 juillet 2007
Statut
Membre
Dernière intervention
18 juillet 2007

La solution était bien là, en effet ....

Seulement attention à la syntaxe. Pour modifier le contenu de la variable IFS, il faut absolument utiliser la syntaxe suivante :

IFS=$'&'

(si on choisit le & comme séparateur)

Par ailleurs, il faut virer le " en début et en fin des noms de fichiers. La commande qui marche devient alors :

tar xvvfz test.tar.gz premier fichier avec blancs et accentués&deuxième fichier avec blancs et accentués

Merci à toi magicwill ...

ps : le deuxième v de la commande tar sert à avoir un affichage du type "ls -l" en sortie de la commande
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 767
Merci ;-))