나는 다음과 같은 일을 하고 있습니다.
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"입니다. 이제 성공적으로 빌드하는 데 왜 그렇게 오랜 시간이 걸렸는지 궁금합니다. 하지만 문제를 해결한 후에는 이제 일반 파이프라인이 작동합니다.