我对通用解决方案感兴趣,但我的具体示例问题是编写一个.bashrc函数,该函数grep在缺少文件路径时将文件路径包装并附加到命令中。基本上,任何时候 grep 都会等待 stdin 我希望它搜索特定文件。我的问题是如何判断(在包装器中)最后一个参数是要搜索的路径还是搜索模式。
$ ls
example_file.txt
$ grep -someopts 'somestring' 'example_file.txt'
Run Code Online (Sandbox Code Playgroud)
假装这-someopts实际上是 grep 的任意有效选项。
最后一个参数是模式(要搜索)还是文件(要搜索)?
如果somestring是 -options 之一的参数,则example_file.txt是要搜索的模式,并且 grep 将在 stdin 上等待。否则,somestring是要搜索的模式example_file.txt并将被搜索。
在前一种情况下,我想在命令的末尾附加我自己的文件以供搜索,但我无法在没有误报的情况下检测到所述情况。唯一的方法似乎是让包装器考虑 grep 可能采用的每个参数。
这是我的包装函数(check_has_path我需要实现的地方):
function grep_wrapped() {
if check_has_path ; then
grep "$@"
else
grep "$@" '/default/filepath.txt'
fi
}
Run Code Online (Sandbox Code Playgroud)