0

我对 bash/shell 函数感到非常沮丧。

我有这个命令:

grep -r '^struct task_struct ' include

我想向我的 bashrc 添加一个函数或别名,让我说类似

grepdefined "struct task_struct" 

并让它从上面运行命令。然后另一次我可以用“struct task_info”或其他东西运行它。太令人沮丧了。

我现在有这个,因为我测试所有内容并猜测问题:

function grepdefined() {
    test="$@";
    echo $test;
    grep -rni '^'$test' ' include;
    #echo "grep -rni'^'$test' ' include;"
}

它只搜索我使用 grepdefined “struct task_struct”传入的“struct task_struct”中的第一个单词“struct”。

4

1 回答 1

4

像这样修改你的 grep 行:

grep -rni "^$test"  include

更新

grep -rni "^$test"  include

实际上变成:

grep -rni "^struct task_struct"  include

然而,

grep -rni '^'$test' ' include

被解释为:

grep -rni ^struct task_struct include

如果您在上面注意到, grep 的搜索模式是 only ^struct,而task_struct被认为是搜索模式的文件之一,include因此您面临的问题只是考虑struct而不是整个事情。只要它是多字字符串,就必须双引号。

于 2013-07-27T08:32:04.733 回答