Les Allergies
Alimentaires
Posez votre question Signaler

Utilisation de grep dans un script bash [Résolu]

Rakoun 42Messages postés 27 décembre 2002Date d'inscription - Dernière réponse le 17 août 2005 à 17:45
Bonjour,

J'ai un petit problème. Je voudrais utiliser la commande grep dans un scrip bash mais je n'y arrive pas. Voilà mon script:

#!/usr/local/bin/bash

source commun

recupererTexte_Toto()
{
    local path=$1
    local resultat="'grep Toto $path | cut -f 4 -d " "'"
    echo $resultat
}

LOG_DIR='~/mon_path/'

if [ "$#" -gt "1" ]
then
    echo "Usage:"
    echo "monScript ou monScript nomFichierDeLog"
    pkill -P $$
    exit 0
fi

if [ "$#" -eq "0" ]
then
    nomFichierDeLog=$LOG_DIR
    nomFichierDeLog=$nomFichierDeLog'nomExecutable.log'
else
    nomFichierDeLog=$LOG_DIR`$1`
fi

nomDeFichier=monFichier'__test__'

if [ "ls" -eq "0" ]
then
    rm $nomDeFichier
fi

recupererTexte_Toto $nomFichierDeLog > $nomDeFichier


Le problème c'est que la variable locale "resultat"ne contient pas le résultat du grep mais le texte de la commande faisant le grep??

Merci
Lire la suite 

Utilisation de grep dans un script bash »

12 réponses
Réponse
+3
moins plus
Salut,

j'ai l'impression que tu as des quotes en trop :
local resultat=`grep Toto $path | cut -f 4 -d " "`

devrait faire l'affaire :)

Ajouter un commentaire
Réponse
+2
moins plus
Récapitulatif:

Dans le script initial j'avais utilisé le caractère ' au lieu du caractère ` dans l'affectation de la variable locale "resultat".
Ensuite le grep n'arrivait pas à ouvrir mon fichier car il s'agissait d'un chemin absolu. En passant au grep un chemin relatif tout fonctionnait.

Rakoun
/°\
Ajouter un commentaire
Réponse
+0
moins plus
En fait quand je fais comme tu dis ça fait pareil à la seule différence que $path n'est pas remplacée par sa vraie valeur. C'est pour cette raison que j'ai ajouté les "".
Ajouter un commentaire
Réponse
+0
moins plus
et si tu met $PATH ou ${path} ?
Ajouter un commentaire
Réponse
+0
moins plus
Pourquoi $PATH?J'ai déjà un $path.
Ajouter un commentaire
Réponse
+0
moins plus
ah oui, j'avais mal lu :/ le path=$1
Ajouter un commentaire
Réponse
+0
moins plus
Mince, je me suis planté, j'ai utilisé ' au lieu de `. Donc maintenant avec ` grep me dit qu'il n'arrive pas à ouvrir le fichier. Pourtant le path est bon vu que ça marche en ligne de commande?
Ajouter un commentaire
Réponse
+0
moins plus
Salut Rakoun,

On dirait que les quotes que tu utilises sont des ' (minuscule du 4) et non des ` (AltGr-7 - soit des "backquotes").

Reprend la syntaxe proposée par marc[i1] en veillant bien à insérer des backquotes.


Dal
Rakoun- 17 août 2005 à 17:15
Ouep bien vu, c'est ce que je disais plus haut ;-). Ca avance...
Ajouter un commentaire
Réponse
+0
moins plus
S'agissant de ton erreur d'ouverture tu passes un chemin absolu ou un chemin relatif dans recupererTexte_Toto() ?


Dal
Rakoun- 17 août 2005 à 17:33
T'as fait la bonne remarque, avec un chemin relatif ça marche!

Merci à tous les deux.
Ajouter un commentaire
Réponse
+0
moins plus
Il s'agit d'un chemin absolu.
Ajouter un commentaire
Ce document intitulé « Utilisation de grep dans un script bash » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?