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

Posted WEL测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建函数-----------(向函数传递数组从函数返回数组)相关的知识,希望对你有一定的参考价值。

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

第6章创建函数-----------(向函数传递数组、从函数返回数组)_shell从函数返回数组

         如果试图将数组变量作为函数参数使用,那么函数只提取数组变量的第一个取值。要解决这个问题,必须将数组变量拆分为单个元素,然后使用这些元素的值作为函数参数。函数内部可以再将这些参数重组为新数组变量。      


#!/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[*]

第6章创建函数-----------(向函数传递数组、从函数返回数组)_shell向函数传递数组_02

         该脚本使用变量$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"

第6章创建函数-----------(向函数传递数组、从函数返回数组)_shell向函数传递数组_03

         函数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[*]"

第6章创建函数-----------(向函数传递数组、从函数返回数组)_bash_04

          这个脚本用变量arg1将数组值传递给函数arraydblr。函数arraylr将该数组重组为新数组变量,并将后者复制后作为输出数组变量。然后,该函数对数组变量的元数据做递推,每个元素值双倍,将其存放到复制的函数数组变量中。之后,函数arraydblr使用echo语句输出数组变量的各元素值。脚本将函数arraydblr的输出按照数据重组为新数组变量。


以上是关于创建函数-----------(向函数传递数组从函数返回数组)的主要内容,如果未能解决你的问题,请参考以下文章

如何向 Shader 传递一个巨大的数组

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 数组:向函数传递数组

c语言向函数传递函数作为参数

java数组作为参数传入函数怎么让他不变化

Go 向函数传递切片该使用值还是指针?

创建函数-----------(在函数中使用变量向函数传递参数在函数中处理变量关键字local)