删除数组元素ksh

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

我需要删除数组中的特定值(它们的索引位置有所不同),类似于javascript中的splice函数。

示例:] >>

set -A ARRAY1 "a" "b" "c" "d" "e"
set -A ARRAY2 "a" "c" "e"

# Expected ARRAY1 after splice: "b" "d"

我尝试过的事情:

] >>

我遍历数组以查找与要删除的值的匹配,并将它们设置为空(“”)。

ITERATION=0
for i in "${ARRAY1[@]}"
do
    for j in "${ARRAY2[@]}"
    do
        if [[ $i == $j ]]
        then
            ARRAY1[$ITERATION]=""
        fi
    done
    ITERATION=$((ITERATION+1))
done

#ARRAY1 after emptying values: "" "b" "" "d" ""

之后,我创建了一个变量来存储第一个数组的值的串联。

VARIABLE=${ARRAY1[@]}

然后再次将阵列重新放在一起。

set -A ARRAY1 $VARIABLE
# VARIABLE: b d

现在,ARRAY1有2个索引,其值分别为预期的“ b”和“ d”。

echo "ARRAY1: ${ARRAY1[@]}"
# output: ARRAY1: b d

我尝试寻找正确的方法来执行此操作,但找不到任何东西,我认为我的解决方案不合适,即使它似乎可行。是否有正确

更好
的方法? ksh中有为此功能吗?

提前感谢!

我需要删除数组中的特定值(它们的索引位置有所不同),类似于javascript中的拼接功能。示例:set -A ARRAY1“ a”“ b”“ c”“ d”“ e” set -A ARRAY2“ a”“ c”“ e” ...

arrays ksh
1个回答
0
投票

所以,您想要做的就是套不同的东西。索引数组不能很好地表示集合。但是,关联数组的键是。

尝试一下:

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