比较两个相似数组之间的元素

比较两个相似数组之间的元素

假设这样一个最小任务选择 B 中的元素但不选择 A 中的元素

file_list1=(a.sh b.sh c.sh)
file_list2=(b.sh c.sh d.sh)

for i in files_list1; do
    for k in files_list2; do
        if [[ $k in $(echo $i) ]]; then
        echo 
        else
        echo $k
        fi
    done
done

它报告错误:

$ bash compare.sh 
compare.sh: line 5: conditional binary operator expected
compare.sh: line 5: syntax error near `in'
compare.sh: line 5: `        if [[ $k in $(echo $i) ]]; then'

如果不适用in,如何让代码工作?

答案1

除了逻辑之外,您还有以下语法错误:

  • file_list不是files_list
  • 要扩展到数组元素,您需要使用“${file_list[@]}”。

尝试外壳检查在发布之前。

如果您必须在 shell 中执行此操作,请尝试:

file_list1=(a.sh b.sh c.sh)
file_list2=(b.sh c.sh d.sh)

for i in "${file_list1[@]}"; do
    repeated_in_A=0
    for k in "${file_list2[@]}"; do
        if [[ $k == $i ]]; then
            repeated_in_A=1
        break 
        fi
    done
    ((repeated_in_A)) || echo "$k"
done

相关内容