2017-04-26 50 views
0

返回多個陣列我寫了一個返回數組的函數:巴什 - 如何與功能

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

回答

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