簡體   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