Aqu*_*wer 2 bash array function
在 bash (v4.3.11) 终端上输入:
function FUNCtst() { declare -A astr; astr=([a]="1k" [b]="2k" ); declare -p astr; };FUNCtst;declare -p astr
Run Code Online (Sandbox Code Playgroud)
(下面相同,只是为了更容易在这里阅读)
function FUNCtst() {
declare -A astr;
astr=([a]="1k" [b]="2k" );
declare -p astr;
};
FUNCtst;
declare -p astr
Run Code Online (Sandbox Code Playgroud)
将输出这个(在函数之外,数组会丢失它的值,为什么?)
declare -A astr='([a]="1k" [b]="2k" )'
bash: declare: astr: not found
Run Code Online (Sandbox Code Playgroud)
我期待它输出这个:
declare -A astr='([a]="1k" [b]="2k" )'
declare -A astr='([a]="1k" [b]="2k" )'
Run Code Online (Sandbox Code Playgroud)
如何使它工作?
从手册页:
When used in a function, declare makes each name local, as with the local command, unless the ‘-g’ option is used.
Run Code Online (Sandbox Code Playgroud)
例子:
$ function FUNCtst() { declare -gA astr; astr=([a]="1k" [b]="2k" ); declare -p astr; };FUNCtst;declare -p astr
declare -A astr='([a]="1k" [b]="2k" )'
declare -A astr='([a]="1k" [b]="2k" )'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4495 次 |
| 最近记录: |