두 개의 유사한 배열 간의 요소 비교

두 개의 유사한 배열 간의 요소 비교

이러한 최소 작업이 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[@]}"를 사용해야 합니다.

노력하다주택 검사출판하기 전에.

셸에서 이 작업을 수행해야 하는 경우 다음을 시도해 보세요.

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

관련 정보