在zsh函数中传递所有参数

30

我试图在我的.zshrc中编写一个简单的函数,用于隐藏所有的错误(主要是“Permission denied”)对于 find

现在,我如何将调用函数给出的所有参数传递给 find

function superfind() {
    echo "Errors are suppressed!"
    find $(some magic here) 2>/dev/null
}

我可以做$1 $2 $3 $4 ...,但这太蠢了!我相信有一种非常简单的方法。

1个回答

53

使用$@,它会展开为所有的位置参数,例如:

superfind () {
    echo "Errors are suppressed!"
    find "$@" 2> /dev/null
}

假设您想传递除第一个参数以外的所有参数? - Ray Andrews
1
@rayandrews: 在find命令之前添加shift命令。 - Thor
2
我的意思是在这种情况下:“echo“第一个参数是:$1,其余的参数是:$2 $3 $4 $5 ...”...你不能在echo内部进行shift操作。但是知道zsh,我敢打赌一定有办法。 - Ray Andrews
10
@rayandrews: 我不确定你的意思,但可以像这样索引数组:echo $a[2,-1] 以获取除第一个元素之外的所有元素。$@ 也可以被视为数组。 - Thor
谢谢Thor,就这样。 - Ray Andrews
4
在zsh中,您可以像${@:1}一样为数组提供偏移量。这将跳过数组的第一个元素并给出其余部分。另一个例子是:${fpath:1}。您还可以使用偏移量+大小的方式例如${@:1:3},它将跳过第一个元素并给出接下来的三个元素。 - smac89

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接