Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在Bash中实现两个数组的并集?_Linux_Bash_Shell - Fatal编程技术网

Linux 如何在Bash中实现两个数组的并集?

Linux 如何在Bash中实现两个数组的并集?,linux,bash,shell,Linux,Bash,Shell,我有两个数组,比如: arr1=("one" "two" "three") arr2=("two" "four" "six") 在Bash中合并这两个数组的最佳方法是什么?首先,合并数组: arr3=("${arr1[@]}" "${arr2[@]}") 然后,应用post提供的解决方案来消除重复数据: # Declare an associative array declare -A arr4 # Store the values of arr3 in arr4 as keys. for

我有两个数组,比如:

arr1=("one" "two" "three")
arr2=("two" "four" "six")

在Bash中合并这两个数组的最佳方法是什么?

首先,合并数组:

arr3=("${arr1[@]}" "${arr2[@]}")
然后,应用post提供的解决方案来消除重复数据:

# Declare an associative array
declare -A arr4
# Store the values of arr3 in arr4 as keys.
for k in "${arr3[@]}"; do arr4["$k"]=1; done
# Extract the keys.
arr5=("${!arr4[@]}")

这假设bash 4+。

bash
4之前

while read -r; do
    arr+=("$REPLY")
done < <( printf '%s\n' "${arr1[@]}" "${arr2[@]}" | sort -u )
读取时-r;做
arr+=(“$REPLY”)

完成<实际并集(无重复)或只是将两个数组连接起来?在zsh中,实际并集(无重复)可以只使用
typeset-U arr
,非常确定在bash中没有这么简单的方法。@Kevin如何使用
typeset-U arr
?@denysdovhan
typeset-U arr;arr=(a b a c);echo$arr#打印一个bc
。无需
arr3
:只需在“${arr1[@]}”“${arr2[@]}”中为k使用