巴什 - 如何与功能

巴什 - 如何与功能

问题描述:

返回多个阵列我写了一个返回数组的函数:巴什 - 如何与功能

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= ... 

任何人都可以建议我一个解决方案吗? 谢谢

+0

为什么你就不能保持在全球范围内的变量,返回数组的是不是最好的方式来设计您的代码 – Inian

+0

如果您可以让我们知道您的要求,那么确实有更好的方法来做到这一点 – Inian

+0

使用真正的编程语言。 – choroba

您需要阅读与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