쉘 스크립트를 통해 다른 사용자에게 메일/쓰기를 보내는 방법은 무엇입니까? EOF를 보내는 방법?

쉘 스크립트를 통해 다른 사용자에게 메일/쓰기를 보내는 방법은 무엇입니까? EOF를 보내는 방법?
if [ who | grep $user | grep pts ]
then
              write $user
                   message here
                   EOF
fi

여기서 실행하면 쓰기가 차단되고 수동으로 메시지를 입력한 다음 Ctrl+를 눌러야 합니다 d.

프로그램을 통해 메시지와 EOF를 보내는 방법이 있습니까?

답변1

당신은 할 수 있습니다한 프로그램에서 다른 프로그램으로 입력을 파이프라인으로 연결이와 같이:

echo "message here"|write $user

또는 다음과 같습니다:

cat /tmp/message|write $user

답변2

아마도 당신이 찾고 있는 것은 다음과 같은 작성 스타일입니다(다른 방법과 동일).

write $user <<EOF
    message here
    as opposed to the
       echo "asd" | write $user
    method, using here-doc redirection transparently allows multiple lines
    and reads everything until seeing the delimiter
    so the sent message end here:
EOF

참고: 여기서는 직접 "EOF 보내기"가 아닙니다. 쉘은 "EOF"라는 단어를 입력 종료 표시로 인식하고 거기에서 입력을 종료합니다. 이 경우 ctrl+d를 누르라는 메시지가 표시되지 않습니다. , 쉘이 파이프로 연결하는 내용을 읽고 있기 때문입니다.

참고 2: 이 내용을 꽤 많이 아는 것이 유용할 수 있습니다.모든유닉스 세계의 명령줄 도구는 이러한 종류의 기본 셸 트릭을 허용합니다. 이는 믿을 수 없을 만큼 보편적인 stdin 개념에만 의존하기 때문입니다. 쓰기는 다른 많은 도구와 마찬가지로 파이프로 연결된 내용을 읽고 요청만 합니다. 그러한 항목이 없고 사용자 입력 방법이 적합할 경우 사용자가 대화식으로 입력합니다.

자세한 내용을 보려면 여기에 정확히 이에 대한 질문이 있습니다.https://stackoverflow.com/questions/2500436/how-does-cat-eof-work-in-bash

관련 정보