[英]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.