【创建函数-----------(向函数传递数组从函数返回数组)】农村四月闲人少,勤学苦攻把名扬。这篇文章主要讲述创建函数-----------(向函数传递数组从函数返回数组)相关的知识,希望能为你提供帮助。
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的输出按照数据重组为新数组变量。
推荐阅读
- 使用REST discovery(pro)生成SoapUI测试
- sedgawk介绍与正则表达式-----------(扩展的正则表达式)
- 创建函数-----------(创建函数定义函数使用函数返回值)
- sedgawk介绍与正则表达式-----------(定义基本正则表达式(BRE)模式)
- 脚本控制------------------------(at命令mail命令batch命令cron表格anacron表格)
- sedgawk介绍与正则表达式-----------(正则表达式定义与类型)
- 脚本控制------------------------(作业控制查看作业jobs命令重新启动停止的作业)
- sedgawk介绍与正则表达式-----------(sed编辑器基础知识)
- 脚本控制------------------------(nice与renice命令进程优先级控制)