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/*.*