[Bash] Exécution d'un tar par script bash

Résolu/Fermé
jerry52 Messages postés 2 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 18 juillet 2007 - 17 juil. 2007 à 10:39
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 18 juil. 2007 à 18:33
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 ....
A voir également:

1 réponse

magicwill Messages postés 93 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 10 juillet 2008 3
17 juil. 2007 à 11:12
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...
++
0
jerry52 Messages postés 2 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 18 juillet 2007
18 juil. 2007 à 15:28
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
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
18 juil. 2007 à 18:33
Merci ;-))
0