第6章创建函数-----------(向函数传递数组、从函数返回数组)
2017-03-14 00:00
253 查看
6.4数组变量与函数
6.4.1向函数传递数组
向脚本函数传递数组变量。如果试图将数组变量作为单个参数传递,是无法正常工作的。操作实例如下:#!/bin/bash #数组当作单个参数传递是无法工作的 function testit { echo "The parameters are:$@" thisarray=$1 echo "The received arrray is ${thisarray[*]}" } #创建数组并给数组赋值 myarray=(1 2 3 4 5) #输出数组内容 echo "The original array is:${myarray[*]}" #调用参数并传参 testit $myarray
如果试图将数组变量作为函数参数使用,那么函数只提取数组变量的第一个取值。要解决这个问题,必须将数组变量拆分为单个元素,然后使用这些元素的值作为函数参数。函数内部可以再将这些参数重组为新数组变量。
#!/bin/bash #函数使用数组变量 function testit { local newarray newarray=(`echo "$@"`) echo "The new array value is :${newarray[*]}" } myarray=(1 2 3 4 5) echo "The original array is ${myarray[*]}" testit ${myarray[*]}
该脚本使用变量$myarray存放所有数组值,并将它们都放在函数命令行。函数命令行随后根据命令行参数重建数组变量。这样,函数内部可以像其他数组一样使用这个数值。
#!/bin/bash #对数组内的元素进行累加 function addarray { local sum=0 local newarray newarray=(`echo "$@"`) for value in ${newarray[*]} do sum=$[ $sum + $value ] done echo $sum } myarray=(1 2 3 4 5) echo "The original array is :${myarray[*]}" arg1=`echo ${myarray[*]}` result=`addarray $arg1` echo "The result is $result"
函数addarray对数组数据递推求和。任意数目的值都可以放在数组变量myarray中,并且函数addarray将对其求和。
6.4.2从函数返回数组
从函数想shell脚本回传数组变量。函数使用echo语句以恰当顺序输出数组各元素的值,然后脚本必须将这些数据重组为新数组变量。#!/bin/bash #从函数返回数组 function arraydblr { local origarray local newarray local elements local i origarray=(`echo "$@"`) newarray=(`echo "$@"`) elements=$[ $# - 1 ] for (( i=0;i<=$elements;i++ )) { newarray[$i]=$[ ${origarray[$i]} * 2 ] } echo ${newarray[*]} } myarray=(1 2 3 4 5) echo "The original array is:${myarray[*]}" arg1=`echo ${myarray[*]}` result=(`arraydblr $arg1`) echo "The new array is:${result[*]}"
这个脚本用变量arg1将数组值传递给函数arraydblr。函数arraylr将该数组重组为新数组变量,并将后者复制后作为输出数组变量。然后,该函数对数组变量的元数据做递推,每个元素值双倍,将其存放到复制的函数数组变量中。之后,函数arraydblr使用echo语句输出数组变量的各元素值。脚本将函数arraydblr的输出按照数据重组为新数组变量。
相关文章推荐
- 第6章创建函数-----------(向函数传递数组、从函数返回数组)
- 第6章创建函数-----------(向函数传递数组、从函数返回数组)
- 第6章创建函数-----------(向函数传递数组、从函数返回数组)
- 第6章创建函数-----------(在函数中使用变量、向函数传递参数、在函数中处理变量、关键字local)
- 数组指针和指针数组以及二维数组的函数间传递与返回
- 数组做函数参数传递和函数返回值
- shell 向函数传递数组和从函数返回数组的一个细节问题
- c++ primer 第五版学习笔记-第6章-返回数组指针的函数和函数指针的数组
- shell 向函数传递数组和从函数返回数组的一个细节问题
- range() 函数创建并返回一个包含指定范围的元素的数组
- 第6章创建函数-----------(在函数中使用变量、向函数传递参数、在函数中处理变量、关键字local)
- 在COM/DCOM中如何将数组作为函数返回的类型传递
- Microsoft.Net框架程序设计学习笔记(21):数组的传递与返回、创建下限非0数组、快速访问数组
- 修改 anyCommonElements(_:_:) 函数来创建一个函数,返回一个数组,内容是两个序列的共有元素
- 第6章创建函数-----------(在函数中使用变量、向函数传递参数、在函数中处理变量、关键字local)
- 最保险的函数间数组作为参数值传递与返回方法,用memcpy函数!
- C++数组(二维数组)与指针 以及 函数传递/返回指针和数组参数
- 在COM/DCOM中如何将数组作为函数返回的类型传递
- asp自定义函数可以返回数组或者对象
- 点滴知识01-----能够返回数组的函数