[Bash] Exécution d'un tar par script bash
Résolu
jerry52
Messages postés
2
Statut
Membre
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
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 ....
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:
- [Bash] Exécution d'un tar par script bash
- Bingo bash free - Télécharger - Divers Jeux
- Script vidéo youtube - Guide
- Bash pause ✓ - Forum Shell
- Bash addition - Forum Programmation
- Bash permission non accordée - Forum Shell
1 réponse
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...
++
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...
++
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