首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash:从源函数内部生成的数组将不会导出

Bash:从源函数内部生成的数组将不会导出
EN

Stack Overflow用户
提问于 2015-11-27 22:14:20
回答 1查看 79关注 0票数 1

考虑下面的脚本,它只是从列表中创建和打印数组:

代码语言:javascript
复制
 $> cat my_script.sh
 #!/bin/sh
 function test_array {
    export list_2="ai ia"
    export list_2_array=($list_2)
    echo list_2=$list_2
    echo list_2_array=$list_2_array
 }
 export list="oi io"
 export list_array=($list)
 echo list=$list
 echo list_array=$list_array
 test_array

编写脚本,将为集合变量和数组生成正确的值:

代码语言:javascript
复制
 $> . my_script.sh
 list=oi io
 list_array=oi
 list_2=ai ia
 list_2_array=ai

在脚本中运行函数仍然会为它们生成正确的值:

代码语言:javascript
复制
 $> test_array
 list_2=ai ia
 list_2_array=ai

然而,尽管正确设置了list_2,但list_2_array却无处可寻:

代码语言:javascript
复制
 $> echo list_2=$list_2
 list_2=ai ia

 $> echo list_2_array=$list_2_array
 list_2_array=

我检查了自动完成功能,实际上,list_2_array甚至都没有设置。

这种行为背后的理由是什么?

EN

回答 1

Stack Overflow用户

发布于 2015-11-28 00:26:01

readonly内置函数也有同样的问题:

代码语言:javascript
复制
bash-4.4$ foo() { readonly a=(1);echo a=$a; }
bash-4.4$ foo
a=1
bash-4.4$ echo a=$a
a=

可能这是一个bug,所以我建议你将这个问题报告给bug-bash,标题为“一个函数中由export/readonly内置创建的数组变量意外地变成了该函数的区域变量”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33959261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档