繁体   English   中英

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

[英]Can not assign function parameters to local array variable in `Zsh`

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

$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上进行了尝试,无论是local变量还是global变量,它bash很好地工作。

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

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

按照ZSH手册 local表现得像typeset

**本地[{+ |-} AEFHUahlprtux] [-LRZi [n]] [名称[=值]] ...

与排版相同,但不允许选项-g和-f。 在这种情况下,-x选项不会强制使用-g,即,导出的变量对于函数而言是局部的。

typeset的段落中说:

请注意,当前无法在排版表达式中分配数组,只能分配标量和整数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM