Utilisation du resultat de ma commande GREP pour un nul [CLOS] [SHELL] - Shell/Batch - Programmation
Marsh Posté le 23-01-2008 à 15:39:28
Fais un pwd avant ton cd pour vérifier que tu es bien dans le bon répertoire.
De toute manière, non seulement c'est mieux de travailler avec des chemins absolus plutôt que relatifs, mais en plus se balader dans les répertoires c'est souvent casse-gueule, mieux vaut travailler à partir de là où on est, et récupérer les fichiers/faire les appels en précisant les différents chemins voulus.
Ex. : cp <chemin absolu>/$PARAMETRE/fichier <chemin destinataire>
Et ton second shebang est inutile.
Marsh Posté le 23-01-2008 à 15:56:41
J'ai modifier mon script comme ça mais c'est pareil, si je mets en dure le résultat de ma commande GREP, j'accède bien à mon repertoire puis je fais un LS, je suis sur de mon chemin, ma commande "cd $REPDML/$PARAMETRE" ,c'est comme si la valeur de $PARAMETRE était vide.
#! /bin/sh
REP_APPLIS=/applis/bla/
echo $REPDML
PARAMETRE=$(grep 0 /applis/bla/bla/bla/blabla.txt)
echo $PARAMETRE
cd $REP_APPLIS/$PARAMETRE
ls
Marsh Posté le 24-01-2008 à 11:14:01
Qu'est ce qui te fais dire que le cd ne marche pas ? Tu as un message d'erreur sur le cd ? Ou alors c'est le ls qui suit qui ne donne pas ce que tu attends ?
Edit : remplace ton "echo $PARAMETRE" par un "echo $PARAMETRE | sed l" pour voir ce qu'il y a réellement dans $PARAMETRE
Marsh Posté le 24-01-2008 à 12:18:03
c'est le résultat de ma commande CD qui ne marche pas
Je n'arrive pas à me rendre dans le repertoire $PARAMETRE alors que le echo $PARAMETRE m'affiche bien le nom du repertoire qui m'interresse.
Voici le résultat de echo $PARAMETRE| sed l
0999\r$
0999
La valeur 0999 est bonne, mon repertoire s'appel bien 0999
Marsh Posté le 25-01-2008 à 11:31:14
Donc ça doit être parce que le fichier sur lequel tu fais le grep est au format dos et pas unix (retour à la ligne CRLF au lieu de LF).
Marsh Posté le 25-01-2008 à 14:46:37
Je viens de faire un unix2dos de mon fichier texte, c'est pas ça, quand je fais un echo, je n'ai pas de saut de ligne.
Je vois pas où est la boulette
Marsh Posté le 25-01-2008 à 15:19:17
Une chose est sure : l'erreur ne vient pas de la commande cd en elle-même.
Soit le chemin spécifié est faux, soit le contenu de $PARAMETRE est erroné.
Marsh Posté le 25-01-2008 à 21:43:43
C'est pas unix2dos qu'il faut faire, c'est dos2unix. Sur le echo c'est normal que ça s'affiche correctement. D'après ce que tu dis je suis sûr à 90% que c'est une problème de \r.
Marsh Posté le 28-01-2008 à 10:44:19
Merci oh grand matafan tu avais raison j'ai fais un dos2unix et ça marche.
Je resterai éternellement newbee en shell
Encore Merci ....
Marsh Posté le 23-01-2008 à 15:17:01
Bonjour,
Je ne suis pas un expérimenté, c'est le moins que l'on puisse dire dans le SHELL
J'ai besoin d'un coup de main
L'idée je fais un grep d'un fichier texte pour en extraire une valeur comme ceci et je l'associe à un nom de paramètre:
PARAMETRE=$(grep 0 /applis/bla/bla/bla/blabla.txt)
Je fais un echo $PARAMETRE il me donne bien le résultat de ce que je lui ai mdemandé :
ECHO $PARAMETRE
Mon paramètre correspond à un nom de repertoire alors je fais un
cd ../../../$PARAMETRE
et là c'est le drame, je n'y arrive pas, ce n'est pas une erreur de chemain car si je remplace à la main la valeur en dure de $PARAMETRE ça marche.
Vous aurriez une idée pour me venir en aide
#! /bin/sh
PARAMETRE=$(grep 0 /applis/bla/bla/bla/blabla.txt)
echo $PARAMETRE
cd ../../../$PARAMETRE
ls
#! /bin/sh
Message édité par lolo71 le 28-01-2008 à 10:45:40