Aller au contenu

[RESOLU] [BATCH] Question de bash


Xaelias

Messages recommandés

Bonjour !

J'essaye d'écrire un script bash qui contiendrait quelque chose du genre :

mv {,../ALL/$d-}$f

qui devrait donc donné, une fois les variables modifiées, un truc du genre

mv Nom_Fichier ../ALL/Nom_Dossier-Nom-Fichier, seulement j'ai ceci comme message d'erreur :

mv: missing destination file operand after `{,../ALL/dir5-}test3'

J'ai essayé divers trucs mais sans succès. Le seul résultat que j'ai réussi à faire, c'est d'obtenir l'affichage de 12 13 (echo {1,2}3) avec la ligne echo `echo {1,2}3` mais je ne sais pas quoi en tirer...

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

J'ai fait quelques essais sur ma machine (shell bash sous Mac OS X), et le bout de script tel que tu le présentes est bien censé fonctionner. J'avais aussi fait un essai rapide sous une Red Hat dans l'après-midi, et ça avait aussi l'air bon. De fait, j'ai plutôt l'impression que ton problème est lié à la configuration du shell utilisé.

Je suis curieux donc de savoir dans quelles conditions exactement la ligne fautive est exécutée (et ce qu'elle est précisément, tu es plutôt évasif dans ton message, ce qui me laisse à penser que rien de ce que tu as posté n'est directement issu du code fautif). Il y aurait quelque chose qui bloquerait l'expansion de l'expression entre accolades. L'usage normal est de lancer le script à la main ? Ou il tourne principalement via un cron ?

Aussi, un truc que j'ai tendance à faire pour m'assurer que mes jokers et variables fonctionnent correctement, c'est en cas de problème de précéder la commande fautive par un echo, de la sorte.

echo "Exec: commande -qui $pose \"des problèmes\""commande -qui $pose "des problèmes"

Mais au vu des symptômes décrits, tu devrais obtenir quelque chose du genre :

Exec: mv {,../ALL/dir5-}test3

Enfin, mais j'imagine que tu ne m'as pas attendu pour faire ainsi, si ton objectif est avant tout que le script marche (tant pis si l'erreur n'est pas comprise), tant pis pour l'utilisation des accolades.

# Expansion « à la main »mv $f ../ALL/$d-$f

En tout cas, à titre purement personnel, je suis curieux de voir pourquoi il y a le problème que tu décris. :)

Lien vers le commentaire
Partager sur d’autres sites

Je retire toutes mes explications, j'ai trouvé d'où vient le problème grâce à toi.

Pour tous mes exos, j'ai repris un exemple donné dans notre cours, dont l'en-tête est : #! /bin/sh

Ce qui a priori bousille tout ce qu'il faut là où il faut...

Du coup maintenant ça marche ><

Bon ben merci ^^

Pb résolu !

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...