2개의 파일 이름 배열이 동일한지 확인하세요.

2개의 파일 이름 배열이 동일한지 확인하세요.

그래서 나는 다음을 가지고 있습니다 :

cat file | grep -E regex  

행 목록을 제공합니다.
이제 파일 목록을 생성하는 for 루프도 있습니다.
배열이 2개 있는 것과 같습니다.
하지만 두 배열의 내용이 동일한 경우 bash에서 어떻게 확인할 수 있습니까? 내 bash 버전은 연관 배열(4.2)을 지원하지 않습니다.
bash 외에 다른 방법을 찾아야 합니까? 아니면 bash를 사용하여 쉽게 얻을 수 있습니까?

고쳐 쓰다
경로를 확인 for i in foo/bar/*하고 기록하여 기본적으로 장소를 확보합니다.

foo/bar/a/b  
foo/bar/c/d   
foo/bar/e etc  

그래서 저는 본질적으로 for 루프를 다시 실행하고 정확히 동일한 결과를 얻었는지 확인하고 싶습니다.

답변1

배열 이름이 "array1" 및 "array2"라고 가정하고 bash 코드를 사용하여 동일한지 확인합니다.

equal=true
if [[ ${#array1[@]} -ne ${#array2[@]} ]]; then
    equal=false
else
    while IFS= read -r elem1 <&3; IFS= read -r elem2 <&4; do
        if [[ "$elem1" != "$elem2" ]]; then
            equal=false
            break
        fi
    done 3< <(printf "%s\n" "${array1[@]}" | sort) \
         4< <(printf "%s\n" "${array2[@]}" | sort)
fi
if $equal; then
    echo arrays have the same contents
else
    echo arrays have different contents
fi

이는 외부 도구를 호출하는 것보다 느릴 것입니다(아마도 "훨씬 느릴" 것입니다).

diff <(grep -E regex file1) <(grep -E regex file2)

관련 정보