4

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

现在是棘手的部分。该函数本身构造赋予grep命令的文件名参数。在调用该函数时,似乎grep正在调用该命令,但控制台绝对没有输出。到目前为止,这是我想出的:

specialGrep() {
    evaluatedFileNamePart=$(someOtherGrepCommandThatEvaluatesAnotherPartOfThePath)

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

这里有什么问题?

4

2 回答 2

3

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

例如,如果您这样做:

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

有关更多信息,请阅读:变量替换,高级 Bash 脚本指南。

于 2013-08-17T06:15:41.790 回答
3
 grep -i "${1}" /fixedPathPart1/"$evaluatedFileNamePart"/fixedPathPart2/*.*
于 2013-08-18T08:40:11.527 回答