首页 > 代码库 > shell--数组 组合 高级应用

shell--数组 组合 高级应用

#!/bin/bash
# 用shell中的数组构造统计不同的组合个数.

# 下面的组合有(1,6)(3,4)(5,5)(1,6)(5,5)(4,3)(1,8)
# 不同的组合为(1,6)(3,4)(5,5)(4,3)(1,8)
arrayLeft=(1 3 5 1 5 4 1)
arrayRight=(6 4 5 6 5 3 8)

# comNum用来表示不同组合个数
comNum=0
arrayLeftLength=${#arrayLeft[*]}
if [[ arrayLeftLength -ge 1 ]]
then
    array[0]="${arrayLeft[0]} ${arrayRight[0]}"
    arrayDiff[0]=${array[0]}
    ((comNum+=1))
fi

for ((i=1;i<arrayLeftLength;i++))
do
    array[$i]="${arrayLeft[$i]} ${arrayRight[$i]}"
    sameFlag=0
    for ((j=0;j<=$(($i-1));j++))
    do
        if [[ "${array[$i]}" = "${array[$j]}" ]]
        then
            sameFlag=1
            break
        fi
    done

    if [[ sameFlag -eq 1 ]]
    then
        :
    else
        arrayDiff[$comNum]=${array[$i]}
        ((comNum+=1))
    fi
done

echo $comNum
echo ${array[*]}
echo ${arrayDiff[*]}
for ((i=0;i<arrayLeftLength;i++))
do
    echo ${arrayDiff[$i]}
done