如何在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
答案 0 :(得分:14)
存在多个问题:
=
周围不能有空格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