如何删除 Bash 数组中的项目?
我想将所有脚本参数传递给 foo
函数,如果第一个参数是 something
,则将所有其余参数传递给 bar
功能。
我是这样实现的:
foo() {
if [ "$1" = 'something' ]; then
args=("$@")
unset args[0]
bar $args
fi
}
foo $@
可以简化吗?
I would like to pass all script arguments to the foo
function, and if the first argument is something
, pass all the rest arguments to the bar
function.
I implemented this like that:
foo() {
if [ "$1" = 'something' ]; then
args=("$@")
unset args[0]
bar $args
fi
}
foo $@
Is that possible to simplify this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,使用
shift
Yes, use
shift
如果您不需要
args
数组来处理foo
中的其他内容,您可以完全避免它,就像 SiegeX 的答案一样。如果您出于其他原因需要 args,那么您正在做的就是最简单的方法。您的代码中有一个错误。当您调用
bar
时,您仅传递args
的第一个元素。要传递所有元素,您需要执行以下操作:If you don't need the
args
array for anything else infoo
, you can avoid it entirely as in SiegeX's answer. If you needargs
for some other reason, what you are doing is the simplest way.There is a bug in your code. When you call
bar
, you're only passing the first element ofargs
. To pass all elements, you need to do this: