gpt4 book ai didi

arrays - 无法将函数参数分配给 `Zsh` 中的局部数组变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:33 25 4
gpt4 key购买 nike

我只是尝试将函数的参数分配为局部数组变量,我试过了

$test_print(){local foo=( "${@:1}" ); echo $foo[*]}; test_print a b c

我得到了

test_print: bad pattern: foo=( a

但是如果我删除 local 关键字

$test_print(){foo=( "${@:1}" ); echo $foo[*]}; test_print a b c

这是工作

a b c

这里有什么问题?如何将我的数组保存到局部变量?

附加信息

我在 bash shell 上试​​过了,它作为 localglobal 变量都运行良好。

最佳答案

为了进行所需的赋值,您必须将 foo 的声明和值的赋值分成两个命令:

test_print(){local foo; foo=( "${@:1}" ); echo $foo[*]}; test_print a b c

根据ZSH Manual local 的行为类似于 typeset:

**local [ {+|-}AEFHUahlprtux ] [ -LRZi [ n ]] [ name[=value] ] ...

Same as typeset, except that the options -g, and -f are not permitted. In this case the -x option does not force the use of -g, i.e. exported variables will be local to functions.

typeset 的段落中它说:

Note that arrays currently cannot be assigned in typeset expressions, only scalars and integers.

关于arrays - 无法将函数参数分配给 `Zsh` 中的局部数组变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32225932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com