grep in bash脚本没有结果

时间:2012-12-13 14:46:38

标签: bash grep

我想制作一个小脚本来节省一些打字,但遗憾的是我没有输出:

#!/bin/bash
grep  -Hnr \"$1\" --include \"*cpp\" --include \"*h\" $2

我在echo和不同的引号使用方面玩得很多,并且说服自己这条线真的扩展到了我想要的东西,但我实际获得任何输出的唯一方法就是:

#!/bin/bash
GREP="grep  -Hnr \"$1\" --include \"*cpp\" --include \"*h\" $2"
echo $GREP | bash

示例用法是:

srcgrep "dynamic_cast" src

我在一个简单的示例目录中试过这个,以排除任何奇怪的链接,权限等。 所以,当然我可以使用第二种,但任何想法在第一种情况下出了什么问题?感谢。

$ grep -V
grep (GNU grep) 2.5.1
...

$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
...

2 个答案:

答案 0 :(得分:3)

为什么不呢:

#!/bin/bash
grep  -Hnr "$1" --include "*cpp" --include "*h" $2

答案 1 :(得分:2)

所以,GNU或其他人找到了一种方法,用完全不合适的选项来搞砸grep。真棒。他们真的应该考虑“做一件事,做得好”的UNIX哲学。 grep用于搜索文件中的文本,而不是用于查找文件。有一个非常好的命令,有一个明显的FINDing文件名称。

find "$2" -name '*cpp' -o -name '*h' -exec grep -Hnr "$1" {} \;

假设您发布的示例中的“$ 2”是目录名而不是文件名,因为您希望grep可以使用。

相关问题