我需要删除数组中的特定值(它们的索引位置有所不同),类似于javascript中的splice函数。
示例:] >>
] >>set -A ARRAY1 "a" "b" "c" "d" "e" set -A ARRAY2 "a" "c" "e" # Expected ARRAY1 after splice: "b" "d"
我尝试过的事情:
我遍历数组以查找与要删除的值的匹配,并将它们设置为空(“”)。
的方法? ksh中有为此功能吗?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
我尝试寻找正确的方法来执行此操作,但找不到任何东西,我认为我的解决方案不合适,即使它似乎可行。是否有正确
或更好
提前感谢!
我需要删除数组中的特定值(它们的索引位置有所不同),类似于javascript中的拼接功能。示例:set -A ARRAY1“ a”“ b”“ c”“ d”“ e” set -A ARRAY2“ a”“ c”“ e” ...
所以,您想要做的就是套不同的东西。索引数组不能很好地表示集合。但是,关联数组的键是。
尝试一下: