LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 950|回复: 3

如何向脚本函数中传递数组变量?

[复制链接]
发表于 2003-10-14 10:50:01 | 显示全部楼层 |阅读模式
编写一个多行显示脚本函数show_progress(),想把一个字符串变量数组myarray传到函数中进行处理,请问怎么实现?
另外,执行echo ${myarray[$N]}可以显示数组中内容,但令$AAA=myarray,把前面的myarray用$AAA取代,不管怎么加{},加$(),都不能显示数组内容。如何在数组表示时用变量取代数组名?
发表于 2003-10-14 11:09:00 | 显示全部楼层
  1. #!/bin/ksh
  2. (($#!=1))&&{ echo Usage: $(basename $0) number; exit 1; }
  3. #脚本内函数处理命令行的输入
  4. set -A arg1 1 2 3 a b c
  5. function show {
  6. echo ${arg1[$1]}
  7. }
  8. show $1
  9. #生成数组arg2的副本
  10. set -A arg2 $(echo ${arg1[*]})
  11. echo ${arg2[*]}
复制代码
 楼主| 发表于 2003-10-14 11:14:46 | 显示全部楼层

这不是把数组做成全局变量了?

在网上搜出了一段源码,好像是标准做法。不过看不懂说明(法文的)


function writefile()
{
   local Array=$1

   for ((i=0; i<${!2}; i++)); do
      eval echo "\${$Array[$i]}"
   done
}

已知我开头的例子中String=$((eval echo \$\{$AAA[1]\}))是可以把数组的值取出来的,数组在函数中传递应该也没问题。
发表于 2003-10-14 11:25:59 | 显示全部楼层
是够标准的写法~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表