如何编写用构造的fileName参数调用grep命令的bash函数
我想创建一个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
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/*.*