间接返回数组中的所有元素

埃里克·史密斯

Bash手册页介绍了使用${!a}来返回变量名称的内容,该变量的名称是内容的内容a(间接级别)。

我想知道如何使用此方法返回数组中的所有元素,即

a=(one two three)
echo ${a[*]}

退货

one two three

我想要:

b=a
echo ${!b[*]}

返回相同的。不幸的是,它不是,而是返回0

更新

有了这些答复,我现在意识到我的示例太简单了,因为类似这样:

b=("${a[@]}")

完全可以实现我所说的需求。

所以,这是我正在尝试做的事情:

LIST_lys=(lys1 lys2)
LIST_diaspar=(diaspar1 diaspar2)

whichone=$1   # 'lys' or 'diaspar'

_LIST=LIST_$whichone
LIST=${!_LIST[*]}

当然,仔细阅读Bash手册页会发现这并不符合预期,因为最后一行只是返回“数组”的索引$_LIST(根本不是数组)。

在任何情况下,都应执行以下操作(如所指出的那样):

LIST=($(eval echo \${$_LIST[*]}))

或...(最终我走的路线):

LIST_lys="lys1 lys2"
...
LIST=(${!_LIST})

当然,假设元素不包含空格。

温汉姆兹

我认为应从字面上对待使用bash变量的间接引用。

例如。对于您的原始示例:

a=(one two three)
echo ${a[*]} # one two three
b=a
echo ${!b[*]} # this would not work, because this notation 
              # gives the indices of the variable b which
              # is a string in this case and could be thought
              # as a array that conatins only one element, so
              # we get 0 which means the first element
c='a[*]'
echo ${!c} # this will do exactly what you want in the first
           # place

对于最后一个真实场景,我相信下面的代码可以完成工作。

LIST_lys=(lys1 lys2)
LIST_diaspar=(diaspar1 diaspar2)

whichone=$1   # 'lys' or 'diaspar'

_LIST="LIST_$whichone"[*]
LIST=( "${!_LIST}" ) # Of course for indexed array only 
                     # and not a sparse one

最好使用"${var[@]}"避免与$IFSand参数扩展混淆的符号这是最终代码。

LIST_lys=(lys1 lys2)
LIST_diaspar=(diaspar1 diaspar2)

whichone=$1   # 'lys' or 'diaspar'

_LIST="LIST_$whichone"[@]
LIST=( "${!_LIST}" ) # Of course for indexed array only 
                     # and not a sparse one
                     # It is essential to have ${!_LIST} quoted

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C ++中,如何找到直接或间接链接到数组特定元素的数组的所有元素?

来自分类Dev

perl从子例程单独返回数组中的所有元素

来自分类Dev

如何在Rails中返回所有元素数组?

来自分类Dev

指向char数组中特定元素的c ++指针返回指定元素之后的所有元素

来自分类Dev

返回对象数组的所有匹配元素?

来自分类Dev

返回JSON数组的所有元素

来自分类Dev

平均所有表中数组中的每个元素并返回矩阵

来自分类Dev

在C#中,将返回数组变量仅返回参考值还是返回所有元素?

来自分类Dev

查找并返回数组中可被 2 或 3 整除的所有元素的总和

来自分类Dev

如何从数组中删除所有元素

来自分类Dev

从数组的所有元素中删除空格

来自分类Dev

反转数组中的所有元素

来自分类Dev

获取数组中的所有元素(JavaScript)

来自分类Dev

从数组中删除所有匹配的元素

来自分类Dev

Java:显示数组中的所有元素

来自分类Dev

从数组的所有元素中删除空格

来自分类Dev

返回json中数组的所有值

来自分类Dev

获取数组中返回的所有计数

来自分类Dev

删除并返回数组中的所有项目

来自分类Dev

返回json中数组的所有值

来自分类Dev

返回所有DOM元素的数组,按深度排序

来自分类Dev

从category和subcategories数组获取数组中的所有元素

来自分类Dev

从category和subcategories数组获取数组中的所有元素

来自分类Dev

追加到数组将替换数组中的所有元素

来自分类Dev

数组拼接从数组中删除所有元素

来自分类Dev

如何返回数组中不包含长类型的 Mongo db 集合中的所有文档,并更改这些元素的类型

来自分类Dev

返回数组中元素的总和,而忽略元素6和9之间的所有元素(也包括在内)

来自分类Dev

为什么C ++中的函数指针返回的数据即将到期并且无法访问数组的所有元素?

来自分类Dev

在Perl中的数组内的所有元素中添加引号

Related 相关文章

  1. 1

    在C ++中,如何找到直接或间接链接到数组特定元素的数组的所有元素?

  2. 2

    perl从子例程单独返回数组中的所有元素

  3. 3

    如何在Rails中返回所有元素数组?

  4. 4

    指向char数组中特定元素的c ++指针返回指定元素之后的所有元素

  5. 5

    返回对象数组的所有匹配元素?

  6. 6

    返回JSON数组的所有元素

  7. 7

    平均所有表中数组中的每个元素并返回矩阵

  8. 8

    在C#中,将返回数组变量仅返回参考值还是返回所有元素?

  9. 9

    查找并返回数组中可被 2 或 3 整除的所有元素的总和

  10. 10

    如何从数组中删除所有元素

  11. 11

    从数组的所有元素中删除空格

  12. 12

    反转数组中的所有元素

  13. 13

    获取数组中的所有元素(JavaScript)

  14. 14

    从数组中删除所有匹配的元素

  15. 15

    Java:显示数组中的所有元素

  16. 16

    从数组的所有元素中删除空格

  17. 17

    返回json中数组的所有值

  18. 18

    获取数组中返回的所有计数

  19. 19

    删除并返回数组中的所有项目

  20. 20

    返回json中数组的所有值

  21. 21

    返回所有DOM元素的数组,按深度排序

  22. 22

    从category和subcategories数组获取数组中的所有元素

  23. 23

    从category和subcategories数组获取数组中的所有元素

  24. 24

    追加到数组将替换数组中的所有元素

  25. 25

    数组拼接从数组中删除所有元素

  26. 26

    如何返回数组中不包含长类型的 Mongo db 集合中的所有文档,并更改这些元素的类型

  27. 27

    返回数组中元素的总和,而忽略元素6和9之间的所有元素(也包括在内)

  28. 28

    为什么C ++中的函数指针返回的数据即将到期并且无法访问数组的所有元素?

  29. 29

    在Perl中的数组内的所有元素中添加引号

热门标签

归档