Comment écrire une fonction bash qui appelle une commande grep avec le paramètre de nom de fichier construit

Je voudrais créer une fonction bash qui appelle la commande grep bien connue. Cette fonction devrait prendre le motif grep comme paramètre.

Maintenant vient la partie délicate. La fonction elle-même construit le paramètre fileName donné à la commande grep . Lors de l’appel de la fonction, il semble que la commande grep soit appelée, mais il n’y a absolument aucune sortie vers la console. Voici ce que j’ai inventé jusqu’ici:

 specialGrep() { evaluatedFileNamePart=$(someOtherGrepCommandThatEvaluatesAnotherPartOfThePath) # take function param as pattern and use constructed filename param grep -i '${1}' /fixedPathPart1/"$evaluatedFileNamePart"/fixedPathPart2/*.* } 

Qu’est-ce qui ne va pas ici?

Cela se produit parce que le référencement par variable est désactivé par des guillemets simples, ce qui entraîne une interprétation littérale du “$”.

Par exemple si vous faites:

 var="test" echo "$var" # will print test echo '$var' # will print $var 

Pour plus d’informations, lisez ceci: Substitution de variables , Guide avancé de Bash-Scripting.

  grep -i "${1}" /fixedPathPart1/"$evaluatedFileNamePart"/fixedPathPart2/*.*