[SHELL]Utilisation du resultat de ma commande GREP pour un nul [CLOS]

Utilisation du resultat de ma commande GREP pour un nul [CLOS] [SHELL] - Shell/Batch - Programmation

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
Reply

Marsh Posté le 23-01-2008 à 15:17:01   

Reply

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.

Reply

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


Message édité par lolo71 le 23-01-2008 à 15:57:16
Reply

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


Message édité par matafan le 24-01-2008 à 11:16:10
Reply

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

Reply

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

Reply

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

Reply

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

Reply

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.

Reply

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed