bash中:具有两个数组参数函数?如何调用,以及如何解析? [重复]

问题描述 投票:0回答:1

这个问题已经在这里有一个答案:

我想在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)

这是可能的,如果是,什么是正确的语法?无论调用函数,以及内部处理阵列的功能是什么时候?

arrays bash function arguments parameter-passing
1个回答
-2
投票

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

正如你所看到所需的输出。

© www.soinside.com 2019 - 2024. All rights reserved.