这个问题已经在这里有一个答案:
我想在bash中,它有两个数组参数这样写一个函数:
#!/bin/bash
function RemoveElements
{
# $1 and $2 are supposed to be arrays
# This function should generate a new array, containing
# all elements from $1 that did not occur in $2
}
a=(1 3 5 7 8)
b=(2 3 6 7)
c=RemoveElements $a $b
# or perhaps: (if directly returning non-integer
# values from function is not possible)
c=$(RemoveElements $a $b)
# c should now be (1 5 8)
这是可能的,如果是,什么是正确的语法?无论调用函数,以及内部处理阵列的功能是什么时候?
RemoveElements.sh的源代码如下:
#!/bin/bash
function RemoveElements {
for i in ${a[@]};do
MATCH=0
for j in ${b[@]};do
if [ $i -ne $j ];then
continue
else
MATCH=`expr $MATCH + 1`
fi
done
if [ $MATCH -eq 0 ];then
c=(${c[@]} $i)
fi
done
}
a=(1 3 5 7 8)
b=(2 3 6 7)
RemoveElements
echo "${c[@]}"
执行后:
# ./RemoveElements.sh
1 5 8
正如你所看到所需的输出。