"grep $2 $ligne" cherchera l'expression désignée par $2 dans le fichier désigné par $ligne...
Il me semble que
if (echo $ligne | grep -q $2)
marcherait mieux: dans ce cas, echo renvoie le contenu de la ligne sur l'entrée standard de grep.
De plus, si tu veux que les noms de fichier, variable ou que les valeurs puissent contenir des caractères spéciaux (espace, par ex.), il faut protéger les $nom_de_var par des guillemets.
Il serait aussi bon de vérifier au début du script que l'utilisateur a fourni trois paramètres, sinon tu risques des résultats inutilisables. Par exemple :
if test $# != 3
then
echo Nombre de paramètres insuffisants
exit 1
fi
Poste le Sunday 7 December 2003 19:58:19