我们如何得到Bash中的两个数组的联合?

我有两个数组,说:

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

在Bash中获得这两个数组的最好方法是什么?

首先,结合数组:

 arr3=("${arr1[@]}" "${arr2[@]}") 

然后,应用此帖子中的解决方案对其进行重复数据删除:

 # 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 ) 

sort -u在其输入上执行一个无重复的联合; while循环只是把所有东西都放回到一个数组中。