2017-05-12 1 views
1

J'ai un fichier SQL qui contient plusieurs requêtes. J'ai besoin de trouver si une requête stockée dans une variable est présente dans ce fichier ou non.Comment vérifier si une chaîne comportant un astérisque (*) est présente dans un fichier ou si elle n'utilise pas grep?

Ce que j'ai essayé:

query="select *from abc;" 
if grep -q "$query" sqlFile.sql 
then 
    echo "duplicate $query" 
fi 

Cela fonctionne pour toutes les requêtes, sauf celles qui ont un astérisque (*) dans la requête.

+1

Retirez le '$' de la variable de requête d'abord, c'est une syntaxe incorrecte – Inian

+2

utiliser 'fgrep' au lieu de' grep' ou utiliser 'grep -F' – sameerkn

Répondre

3

Faites vos chaînes de recherche pour être des chaînes plutôt que de permettre d'être des caractères regexp, utilisez le drapeau -F,

query="select *from abc;" 

if grep -qF "$query" sqlFile.sql ; then 
    echo "duplicate $query" 
fi 
+0

Merci. Ce travail ne me permettait pas d'accepter cette réponse. Maintenant, je suis capable de le faire. –

1

Vous pouvez essayer comme ça

query="select \* from abc"              

if grep -q "$query" sqlFile.sql             
then                    
     echo "duplicate $query" 
fi