我们如何在Shell脚本中比较两个数组并显示结果?
假设我们有以下两个数组:
list1=( 10 20 30 40 50 60 90 100 101 102 103 104)
list2=( 10 20 30 40 50 60 70 80 90 100 )
我的要求是按顺序比较这两个数组,仅显示来自
list1
的结果为(101 102 103 104)
。 它不应包括在list2
中存在但list1
中不存在的值70
和80
。这并没有帮助,因为它包括了所有内容:
echo "${list1[@]}" "${list2[@]}" | tr ' ' '\n' | sort | uniq -u
我尝试过类似下面这样的操作,但为什么它不起作用?
list1=( 10 20 30 40 50 60 70 90 100 101 102 103 104)
list2=( 10 20 30 40 50 60 70 80 90 100 )
for (( i=0; i<${#list1[@]}; i++ )); do
for (( j=0; j<${#list2[@]}; j++ )); do
if [[ ${list1[@]} == ${list2[@] ]]; then
echo 0
break
if [[ ${#list2[@]} == ${#list1[@]-1} && ${list1[@]} != ${list2[@]} ]];then
echo ${list3[$i]}
fi
fi
done
done