如何从 shell 向 bash 函数传递参数

发布于 2024-12-05 00:49:59 字数 503 浏览 1 评论 0原文

我在 .bash_aliases 中定义了以下函数,

findphp () {
    find -name '*.php' -exec grep -H  --color "$@" "{}" \;
}

它允许我运行 findphp 'function x' 之类的东西来查找对 function x 的所有引用php 文件

现在我想传递文件类型进行搜索,例如 js、css、ctp 作为 bash 中的参数

我定义了以下函数并获取了 .bash_aliases

myfind () {
    find -name '*.$1' -exec grep -H  --color "$2" "{}" \;
}

但它不起作用,我尝试了单引号,位置周围的双引号 参数 无济于事。

如何定义一个将文件扩展名和搜索字符串作为命令行参数的函数?

I have the following function defined in .bash_aliases

findphp () {
    find -name '*.php' -exec grep -H  --color "$@" "{}" \;
}

It allows me to run something like findphp 'function x' to find all references to function x in php files

Now I want to pass the file type to search, example js, css, ctp as a parameter in bash

I defined the follwing function and sourced .bash_aliases

myfind () {
    find -name '*.$1' -exec grep -H  --color "$2" "{}" \;
}

But it's not working, I tried single quotes, double quotes around the positional parameters
with no avail.

How could I define a function that takes the file extension and search string as arguments from the command line?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

睫毛溺水了 2024-12-12 00:49:59

单引号可防止变量扩展。使用“*.$1”

Single quotes prevent variable expansion. Use "*.$1"

伤痕我心 2024-12-12 00:49:59

试试这个:

findphp () {
    find . -name "*.$1" -exec grep -H --color "${@:2}" "{}" \;
}

或者

findphp () {
    find . -name "*.$1" -print0 | xargs -0 grep -H --color "${@:2}"
}

如果你也想要文件名

Try this:

findphp () {
    find . -name "*.$1" -exec grep -H --color "${@:2}" "{}" \;
}

or

findphp () {
    find . -name "*.$1" -print0 | xargs -0 grep -H --color "${@:2}"
}

if you want the filenames too

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文