巴什 - 如何与功能
问题描述:
返回多个阵列我写了一个返回数组的函数:巴什 - 如何与功能
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= ...
任何人都可以建议我一个解决方案吗? 谢谢
答
您需要阅读与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
为什么你就不能保持在全球范围内的变量,返回数组的是不是最好的方式来设计您的代码 – Inian
如果您可以让我们知道您的要求,那么确实有更好的方法来做到这一点 – Inian
使用真正的编程语言。 – choroba