从函数返回数组

从函数返回数组

Content #

函数向shell脚本返回数组变量也采用类似的方法。函数先用echo语句按正确顺序输出数组的各个元素,然后脚本再将数组元素重组成一个新的数组变量:

$ cat test12
#!/bin/bash
# returning an array value

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[*]}"
$
$ ./test12
The original array is: 1 2 3 4 5
The new array is: 2 4 6 8 10

该脚本通过$arg1变量将数组元素作为参数传给arraydblr函数。arraydblr函数将传入的参数重组成新的数组变量,生成该数组变量的副本。然后对数据元素进行遍历,将每个元素的值翻倍,并将结果存入函数中的数组变量副本。

arraydblr函数使用echo语句输出每个数组元素的值。脚本用arraydblr函数的输出重组了一个新的数组变量。

From #

Linux命令行与shell脚本编程大全

数组变量(Bash)