Problème avec tar dans un script - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 01-02-2012 à 19:49:52
Salut Magic.
Tu sais que tu n'es pas obligé de faire plusieurs commandes distinctes ?
Ton script pourrait être résumé en :
Code :
|
Marsh Posté le 01-02-2012 à 21:03:22
Houla que c'est moche !
Code :
|
Marsh Posté le 01-02-2012 à 21:41:45
J'ai l'impression que ton script met les fichier MET OU les fichiers EXP, ce qui n'est pas ce que Magic cherche a priori.
Et il n'a pas précisé si il faisait du bash ou pas (mais bien bel usage du bash de ta part, j'avoue )
Marsh Posté le 01-02-2012 à 23:33:48
Oui, tout à fait. Mais la demande est pas claire, je lis :
Citation : J'ai cherché sur le net comment faire un "ou" avec ls, mais je n'ai pas trouvé. |
MagicBuzz si tu nous entends
Marsh Posté le 02-02-2012 à 09:38:10
Bonjour, et merci pour votre réponse très rapide !
ccp6128 a bien compris ma demande, c'est un OU logique, donc inclusif que je cherche à reproduire.
Donc je veux soit l'un, soit l'autre, soit les deux, selon si l'un, l'autre ou les deux sont présents
La solution de ccp6128 semble correspondre parfaitement à mon attente.
Etant donné que :
1/ j'y connais pas grand chose en script (pas plus qu'à Linux en fait ^^)
2/ que je modifie le script écrit par une autre personne
3/ que cette personne s'y connait pas beaucoup plus que moi
4/ et qu'elle déteste que j'ajoute de nouvelles choses qu'elle ne maîtrise pas
=> je vais donc garder la syntaxe proposée par ccp6128, qui est similaire à l'originale, contrairement à celle de sputnick qui fait appel à des fonctions que je n'ai jamais vu dans les scripts de ma collègue ("shopt -s nullglob" et "compgen" ) et que je ne saurai pas justifier ou corriger en cas de régression
Marsh Posté le 02-02-2012 à 20:08:44
Bonjour,
J'ai essayé le script de ccp6128, et ça ne semble pas fonctionner.
Je n'ai que des fichiers ced*exp* et pas de fichiers ced*met*, et aucun tar n'a été créé.
A noter que je suis en script KSH et non BASH.
Marsh Posté le 08-02-2012 à 17:31:58
Hum ...
Pour quoi pas tout simplement :
Code :
|
Marsh Posté le 11-02-2012 à 10:54:35
Je sais pas pour ksh, mais en bash tu peux faire ça :
ls ced*{met,exp}.las*
Du coup avec tar c'est faisable aussi, puisque c'est le bash qui fait l'evaluation de l'expression régulière :
tar -cf toto.tar ced*{met,exp}.las* |
Ca me parait plus simple et plus lisible quand même
Marsh Posté le 01-02-2012 à 18:07:27
Bonjour,
J'ai un script qui, dans un traitement, doit mettre tous les fichier "ced*met.las*" et "ced*exp.las*" dans un fichier tar.
J'ai cherché sur le net comment faire un "ou" avec ls, mais je n'ai pas trouvé.
J'ai trouvé qu'on pouvait utiliser *, ? et [] mais pas de notion de ou logique.
Qu'à cela ne tienne, j'ai fais deux instructions :
Mais le code ci-dessus écrase le tar créé dans le permier if (d'ailleurs, pas bien pigé, car il ne l'écrase pas complètement, il reste un des fichiers dedans mais bon).
Qu'à cela ne tienne, il suffit que je lance avec Avf la première fois, puis cvf la seconde...
Sauf que j'ai un problème : il n'y a pas forcément toujours de fichier "ced*met.las*" ou "ced*exp.las*"
Comment :
- Faire un "ls ced*(met|exp).las* 2>/dev/null
- ou bien comment dire à tar de créer ou ajouter de façon automatique selon existence du fichier
J'ai tenté de mettre Avf à chaque fois, mais le fichier généré est alors invalide, et je peux plus le untar.