위 파이프라인이 출력을 생성하는지 테스트하는 표준/표준 방법은 무엇입니까?

위 파이프라인이 출력을 생성하는지 테스트하는 표준/표준 방법은 무엇입니까?

제가 생각하는 상황은 다음과 같은 구조를 가지고 있습니다.

% some_command | [PRODUCED OUTPUT] || echo 'no output' >&2

이는 출력이 생성되는 경우에만 값이 "성공" [PRODUCED OUTPUT]이어야 하는 지정되지 않은 테스트 명령을 나타냅니다 .truesome_command

물론, some_command임의로 복잡한 파이프라인을 나타내고 마찬가지로 출력을 생성하지 않고 수행되는 임의의 작업을 echo 'no output' >&2나타냅니다 .some_command

위의 작업을 수행하는 표준 테스트가 있습니까 [PRODUCED OUTPUT]? grep -qm1 '.'닫히지만 빈 줄로 구성된 입력에 대한 오류도 보고합니다.

같지 않은파이프가 비어 있는지 확인하고 비어 있으면 데이터에 대해 명령을 실행하십시오.입력이 존재하는 경우 삭제하고 싶으므로 유지할 필요가 없습니다.

답변1

사용해 보는 것은 어떨까요 read?

$ cat /dev/null | read pointless || echo no output
no output
$ echo something | read pointless || echo no output
$ printf "\n" | read pointless || echo no output
$ printf " \n" | read pointless || echo no output
$ false | read pointless || echo no output
no output

~에 따르면그룹 정의 열기:

종료 상태

다음 종료 값이 반환되어야 합니다.

0

성공적으로 완료되었습니다.

>0

파일 끝이 감지되었거나 오류가 발생했습니다.

답변2

나에게 잘 작동합니다 | read -n 1.

$ echo 'faw' | read -n 1 || echo 'no output'
$ echo | read -n 1 || echo 'no output'
$ printf '' | read -n 1 || echo 'no output'
no output
$ false | read -n 1 || echo 'no output'
no output
$

관련 정보