제가 생각하는 상황은 다음과 같은 구조를 가지고 있습니다.
% some_command | [PRODUCED OUTPUT] || echo 'no output' >&2
이는 출력이 생성되는 경우에만 값이 "성공" [PRODUCED OUTPUT]
이어야 하는 지정되지 않은 테스트 명령을 나타냅니다 .true
some_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
$