파일이나 표준 입력에서 읽을 수 있는 쉘 스크립트가 있습니다. 현재 파일이나 파이프 텍스트를 제공하지 않으면 명령 프롬프트에서 입력을 받아들이기 시작합니다.
대신 이 경우에는 "도움말" 메시지를 인쇄하고 싶습니다. 이를 수행하는 표준 방법이 있습니까? 그렇지 않은 경우 표준 입력에 영향을 주지 않고 감지할 수 있는 방법이 있습니까? 아니면 잠재적인 입력이 어디서 오는지 감지하는 방법이 있습니까?
read
명령이 종료 상태를 통해 입력이 있는지 알려줄 수 있다는 것을 알고 있습니다 . 하지만 그것 또한행동입력 시 후속 읽기에 영향을 줍니다.
답변1
해결책은 입력이 tty 장치에서 오는지 확인하는 것입니다. 먼저 args가 제공되었는지 확인한 다음 를 확인하십시오 tty
.
if [ ! "$#" -gt 0 ] && tty -s ; then
show_help
exit 1
fi
문서에서 tty
:
표준 입력에 연결된 터미널의 파일 이름을 인쇄합니다.
표준 입력에 연결된 터미널이 없으면 tty
실패 종료 상태가 제공됩니다. 그리고 이 -s
옵션은 출력을 억제합니다.