다음과 같은 두 개의 배열이 있습니다 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