将数组传递给shell脚本的功能

时间:2011-06-30 10:26:06

标签: shell

如何在shell脚本中将数组作为函数传递?
我写了以下代码:

function test(){
param1 = $1
param2 = $2
for i in ${$param1[@]}
do
   for j in ${param2[@]}
do
       if($(i) = $(j) )
           then
           echo $(i)
           echo $(j)
       fi
done
done
}

但我得到了line 1: ${$(param1)[@]}: bad substitution

2 个答案:

答案 0 :(得分:14)

存在多个问题:

  • 分配变量时,=周围不能有空格
  • 你的if语句语法错误
  • 数组传递不正确
  • 尽量不要调用函数test,因为这是一个shell命令

这是固定版本:

myFunction(){
  param1=("${!1}")
  param2=("${!2}")
  for i in ${param1[@]}
  do
    for j in ${param2[@]}
    do
       if [ "${i}" == "${j}" ]
       then
           echo ${i}
           echo ${j}
       fi
    done
  done
}

a=(foo bar baz)
b=(foo bar qux)
myFunction a[@] b[@]

答案 1 :(得分:0)

您可以相应地使用以下脚本

#!/bin/bash

param[0]=$1
param[1]=$2


function print_array  {
        array_name=$1
        eval echo \${$array_name[*]}
        return
}

print_array param
exit 0