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

Viv*_*oel 4 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
}
Run Code Online (Sandbox Code Playgroud)

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

dog*_*ane 17

有很多问题:

  • =在分配变量时,你不能有空格
  • 你的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[@]
Run Code Online (Sandbox Code Playgroud)