【问题标题】:How to return multiple arrays with function如何使用函数返回多个数组
【发布时间】:2017-09-23 18:37:36
【问题描述】:

我写了一个返回数组的函数:

create(){
   my_list=("a" "b" "c")
   echo "${my_list[@]}"
}

result=$(create)
for var in result
do
    echo $var
done

现在,我想扩展它以返回多个数组。 例如,我想写这样的东西:

create(){
    my1=("1" "2")
    my2=("3","4")
    my3=("5","6")
     echo "${my1[@]} ${my3[@]} ${my3[@]}"
}

我想获取每个返回的数组:

 res1= ...
 res2= ...
 res3= ...

谁能给我一个解决方案? 谢谢

【问题讨论】:

  • 为什么不能只在全局上下文中维护一个变量,返回数组并不是设计代码的最佳方式
  • 如果您可以让我们知道您的要求,肯定有更好的方法来做到这一点
  • 使用真正的编程语言。
  • 从技术上讲,你甚至不能返回一个 single 数组;您可以输出一个或多个数组的元素
  • 尝试在create 中设置my_list=("a b" "c d" "e f") 看看会发生什么。

标签: bash


【解决方案1】:

您需要使用while 循环阅读。

while read -r val1 val2; do
    arr1+=("$val1")
    arr2+=("$val2")
done < file.txt

bash 中没有数组这样的东西;您不能以您在问题中尝试的方式使用数组。考虑这个结果:

create(){
   my_list=("a 1" "b 2" "c 3")
   echo "${my_list[@]}"
}

result=$(create)
for var in $result
do
    echo $var
done

这会产生

a
1
b
2
c
3

不是

a 1
b 2
c 3

【讨论】:

    猜你喜欢
    • 2019-06-09
    • 2021-11-27
    • 1970-01-01
    • 2021-05-13
    • 2023-02-26
    • 1970-01-01
    • 2011-08-11
    • 2015-09-08
    • 2018-12-11
    相关资源
    最近更新 更多