数组可以作为函数的第一个参数吗?

数组可以作为函数的第一个参数吗?

我有一个函数,其中一个参数是一个包含空格分隔单词的字符串。
例如,"foo bar ccc"
我认为这种字符串可以被视为一个“数组”并循环每个单词。
我的问题是,如果我需要将其作为参数传递给函数,它可以作为第一个参数还是会产生问题?
我尝试将其作为第一个参数,它有效,但我不确定是否有任何需要注意的陷阱

答案1

这是一个字符串,而不是真正的数组。但是,是的,您可以将带有空格的字符串传递给函数,作为第一个参数或任何其他参数。

set -f
f() {
    IFS=' '
    for x in $2; do echo "> $x"; done
}
liststr="foo bar ccc"
f something "$liststr" somethingelse

请记住,如果您使用不带引号的扩展来拆分字符串,则生成的单词也会经过通配符,这可能是您想要的,也可能不是您想要的。您可以使用 禁用(全局)通配符set -f,如上所述。

但由于您使用 Bash 标记了它,因此您可能应该使用适当的数组,然后传递数组名称以与 nameref 变量一起使用,或者在调用函数时将数组拆分为单独的参数。

看:

相关内容