创建函数-----------(向函数传递数组从函数返回数组)

【创建函数-----------(向函数传递数组从函数返回数组)】农村四月闲人少,勤学苦攻把名扬。这篇文章主要讲述创建函数-----------(向函数传递数组从函数返回数组)相关的知识,希望能为你提供帮助。
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的输出按照数据重组为新数组变量。



    推荐阅读