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