Rechercher : dans
Par :

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

Dernière réponse le 18 jui 2007 à 18:33:54 jerry52, le 17 jui 2007 à 10:39:30 
 Signaler ce message aux modérateurs

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 ....

Configuration: Mandrake 10.1
Bash

Meilleures réponses pour « [Bash] Exécution d'un tar par script bash » dans :
Exécuter un script shell Voir Exécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
Bash - Les paramètres VoirIntroduction Les paramètres positionnels Exemple 1 Les paramètres spéciaux Exemple 2 Initialiser des paramètres - La commande "set" - Exemples - La commande "shift" - Exemple 3 Introduction Il est possible de fournir à un script,...
Script au démarrage et à l'arrêt d'Ubuntu VoirFaire exécuter un script au démarrage d'Ubuntu Modifiez le fichier /etc/rc.local et ajoutez vos commandes. Le script doit toujours se terminer par un exit 0 Faire exécuter un script au redémarrage Placez votre script dans /etc/rc0.d et rendez...

1

magicwill, le 17 jui 2007 à 11:12:47

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...
++

Répondre à magicwill

2

jerry52, le 18 jui 2007 à 15:28:11

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

Répondre à jerry52

3

 jipicy, le 18 jui 2007 à 18:33:54

Merci ;-))
Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy