파이프 프로그램 출력을 읽을 때 파이프 파손 오류가 발생했습니다.

파이프 프로그램 출력을 읽을 때 파이프 파손 오류가 발생했습니다.

나는 다음과 같은 일을 하고 있습니다.

declare -Ft handle_format_output &>/dev/null && exit 1   # test if this function name is already present in this scope
handle_format_output() {
    case $1 in
    domain) ./scripts/idn_to_punycode.pl >>"${2}_${1}.txt" ;;
    ipv4)
        # read doesn't bother w/ pipe input as its undefined: guessing it's leading to pipe breaks
        # therefore open stdin as a separate file and read from it to close the previous pipe
        while IFS= read -r line <&3; do
            case $line in
            */*) printf "%s\n" "$line" >>"${2}_${1}_cidr.txt" ;; # cidr block
            *-*) ipcalc "$line" >>"${2}_${1}_cidr.txt" ;;        # deaggregate ip range
            *) printf "%s\n" "$line" >>"${2}_${1}.txt" ;;        # ip address
            esac
        done 3< /dev/stdin
        ;;
    ipv6) cat -s >>"${2}_${1}.txt" ;;
    esac
}

...  |
  mawk '!seen[$0]++' | # filter duplicates and blank lines
  handle_format_output "$format" "$color"

입력은 웹 도메인, IPv4 주소, IPv4 CIDR 블록 또는 IPv6 주소일 수 있는 선형 텍스트입니다. 형식은 "도메인", "ipv4" 또는 "ipv6"입니다. 색상은 "흰색" 또는 "검은색" 입니다.

무엇을 시도해도 다음 오류가 계속 발생합니다.

mawk: write failure (Broken pipe)
mawk: close failed on file /dev/stdout (Broken pipe)
Error: Process completed with exit code 2.

내가 뭘 잘못했나요?

답변1

나는 그것을 생각했다! 일부 형식 데이터 필드는 "ipv4" 대신 "ivp4"입니다. 이제 성공적으로 빌드하는 데 왜 그렇게 오랜 시간이 걸렸는지 궁금합니다. 하지만 문제를 해결한 후에는 이제 일반 파이프라인이 작동합니다.

관련 정보