如何编写用构造的fileName参数调用grep命令的bash函数

如何编写用构造的fileName参数调用grep命令的bash函数,bash,function,unix,parameters,grep,Bash,Function,Unix,Parameters,Grep,我想创建一个bash函数来调用众所周知的grep命令。此函数应将grep模式作为参数 现在是棘手的部分。函数本身构造给定给grep命令的fileName参数。调用函数时,似乎正在调用grep命令,但控制台绝对没有输出。以下是我到目前为止的想法: specialGrep() { evaluatedFileNamePart=$(someOtherGrepCommandThatEvaluatesAnotherPartOfThePath) # take function param a

我想创建一个bash函数来调用众所周知的
grep
命令。此函数应将grep模式作为参数

现在是棘手的部分。函数本身构造给定给
grep
命令的fileName参数。调用函数时,似乎正在调用
grep
命令,但控制台绝对没有输出。以下是我到目前为止的想法:

specialGrep() {
    evaluatedFileNamePart=$(someOtherGrepCommandThatEvaluatesAnotherPartOfThePath)

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

这里怎么了?

发生这种情况是因为单引号禁用了变量引用,这导致“$”被逐字解释

例如,如果您这样做:

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

有关更多信息,请阅读以下内容:,高级Bash脚本指南。

该参数不会在单引号内展开。尝试使用双引号,如
grep-i“$1”…
这就是解决方案。在这里,我认为错误在于$evaluatedFileNamePart。非常感谢。@user000001:看起来这就是答案;你可能应该这样贴。吉蒙瑟巴恩:请不要在标题中编辑“(已解决)”。表示问题已解决的方法是接受答案。请注意,您应该学习如何使用
bash-x脚本
(通常在函数内部,
set-x
set+x
)来查看脚本为您做了什么。这将有助于你避免再问这样的问题。@KeithThompson补充道。
 grep -i "${1}" /fixedPathPart1/"$evaluatedFileNamePart"/fixedPathPart2/*.*