Rechercher : dans
Par :

Utilisation de grep dans un script bash

Dernière réponse le 17 aoû 2005 à 17:45:21 Rakoun, le 17 aoû 2005 à 16:45:55 
 Signaler ce message aux modérateurs

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 Be water my friend, be water.
Configuration: Sun/Solaris 8

Meilleures réponses pour « Utilisation de grep dans un script bash » dans :
Changer le mot de passe via un script VoirChanger le mot de passe via un script passwd Traditionnellement avec la commande "passwd" et son option "--stdin", au travers d'un "tube" (pipe en anglais), ce qui donne la syntaxe suivante :echo -e "new_password\nnew_password" | (passwd --stdin...
Bash - Les paramètres VoirIntroduction Les paramètres positionnels Exemple 1 Les paramètres spéciaux Exemple 2 Initialiser des paramètres - La commande "set" - Exemples - La commande "shift" - Exemple 3 Introduction Il est possible de fournir à un script,...
Linux - Gestion des utilisateurs VoirPremier pas de l'administrateur Lorsque diverses personnes ont accès à un système, il est nécessaire que l'administrateur système gère les utilisateurs. Pour ceci, les commandes usuelles et les fichiers à configurer doivent être connus. Les...

1

marc[i1], le 17 aoû 2005 à 16:47:37
  • +1

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

Non seulement la solution n'existe pas, mais en plus
elle n'est pas unique.

Répondre à marc[i1]

2

Rakoun, le 17 aoû 2005 à 16:51:04

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 "".
Be water my friend, be water.

Répondre à Rakoun

3

marc[i1], le 17 aoû 2005 à 16:53:14

Et si tu met $PATH ou ${path} ?
Non seulement la solution n'existe pas, mais en plus
elle n'est pas unique.

Répondre à marc[i1]

4

Rakoun, le 17 aoû 2005 à 16:59:34

Pourquoi $PATH?J'ai déjà un $path. Be water my friend, be water.

Répondre à Rakoun

5

marc[i1], le 17 aoû 2005 à 17:00:47

Ah oui, j'avais mal lu :/ le path=$1
Non seulement la solution n'existe pas, mais en plus
elle n'est pas unique.

Répondre à marc[i1]

6

Rakoun, le 17 aoû 2005 à 17:08:11

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?
Be water my friend, be water.

Répondre à Rakoun

7

[Dal], le 17 aoû 2005 à 17:12:52

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

Répondre à [Dal]

8

Rakoun, le 17 aoû 2005 à 17:15:44

Ouep bien vu, c'est ce que je disais plus haut ;-). Ca avance... Be water my friend, be water.

Répondre à Rakoun

9

[Dal], le 17 aoû 2005 à 17:22:43

S'agissant de ton erreur d'ouverture tu passes un chemin absolu ou un chemin relatif dans recupererTexte_Toto() ?


Dal

Répondre à [Dal]

11

Rakoun, le 17 aoû 2005 à 17:33:47

T'as fait la bonne remarque, avec un chemin relatif ça marche!

Merci à tous les deux. Be water my friend, be water.

Répondre à Rakoun

10

Rakoun, le 17 aoû 2005 à 17:26:40

Il s'agit d'un chemin absolu. Be water my friend, be water.

Répondre à Rakoun

12

 Rakoun, le 17 aoû 2005 à 17:45:21

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
/°\
Be water my friend, be water.

Répondre à Rakoun
Collection CommentÇaMarche.net