파일 내용과 같은 diff에 BASH 배열을 전달합니다.

파일 내용과 같은 diff에 BASH 배열을 전달합니다.

다음과 같은 두 개의 배열이 있습니다 bash.

arr1=( 1 2 3 )
arr2=( 1 2 A )

를 사용하여 비교하고 싶습니다 diff. 배열을 파일 내용으로 어떻게 전달합니까?

몇 가지 변형을 시도했지만 모두 실패했습니다.

diff -y <$( echo ${arr1[@]} | tr ' ' '\n' ) <$( echo ${arr2[@]} | tr ' ' '\n' )
diff -y <${arr1[@]} <${arr2[@]}
diff -y $(<${arr2[@]}) $(<${arr1[@]})
diff -y  <<<"$( echo ${arr1[@]} | tr ' ' '\n' )" \
         <<<"$( echo ${arr2[@]} | tr ' ' '\n' )"

원하는 출력은 예상 출력이 될 것입니다 diff -y. 배열을 파일 a 및 b에 저장하면 다음 출력을 얻습니다.

diff a b
 1        1
 2        2
 3      | A

(읽을 수 있는 공간 줄이기)

속도상의 이유로 중간 파일 작성을 피하고 싶습니다. 하지만 tmpfs의사 파일은 RAM 기반 해결 방법이라는 것을 알고 있습니다.

답변1

사용 printf프로세스 교체

diff -y  <(printf '%s\n' "${arr1[@]}")  <(printf '%s\n' "${arr2[@]}")
1                                                               1
2                                                               2
3                                                             | A

관련 정보