gpt4 book ai didi

arrays - 如何在bash中创建列表(或类似列表)数组?

转载 作者:行者123 更新时间:2023-12-02 06:14:27 25 4
gpt4 key购买 nike

我想遍历bash中的一些列表。现在我有

array=("list1item1 list1item2" "list2item list2item2")

for list in "${array[@]}"
do
for item in $list
do
echo $item
done
done

这行不通。有什么方法可以在bash中创建列表列表,数组数组或列表数组?

我想遍历list1,然后遍历list1中的listitems。然后遍历list2和list2中的列表项。

最佳答案

一旦我将缺少的dodone添加到您的代码中:

array=("list1item1 list1item2" "list2item list2item2")

for list in "${array[@]}"
do
for item in $list
do
echo $item
done
done

它产生了预期的输出:
list1item1
list1item2
list2item
list2item2

我不清楚这与您的期望有何不同。

但是,这不是将列表嵌套到数组中的一种非常通用的方法,因为它取决于内部列表是由IFS分隔的。 Bash不提供嵌套数组。数组严格来说是字符串数组,仅此而已。

您可以使用间接寻址( ${!v})并将变量名称存储到外部数组中,尽管这有点难看。以下是一个不太丑陋的变体,它依赖于namerefs。它可以与合理的最新bash版本一起使用:
array=(list1 list2)
list1=("list 1 item 1" "list 1 item 2")
list2=("list 2 item 1" "list 2 item 2")
for name in "${array[@]}"; do
declare -n list=$name
for item in ${list[@]}; do
echo "$item"
done
done

输出:
list 1 item 1
list 1 item 2
list 2 item 1
list 2 item 2

关于arrays - 如何在bash中创建列表(或类似列表)数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41966140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com