문제

우분투 리눅스가 있습니다. 하나의 명령이 Gmail에서 읽지 않은 메시지 주제를 다운로드 할 수 있음을 발견했습니다.

curl -u USERNAME:PASSWORD --silent "https://mail.google.com/mail/feed/atom" | tr -d '\n' | awk -F '<entry>' '{for (i=2; i<=NF; i++) {print $i}}' | sed -n "s/<title>\(.*\)<\/title.*name>\(.*\)<\/name>.*/\2 - \1/p"

... 그런 다음 다른 명령을 쉽게 보낼 수있는 다른 명령 (APT-GET을 통해 SendEmail 명령을 설치 한 후) :

sendEmail -f EMAIL@DOMAIN.COM -v -t PHONE@SMS.COM -u Gmail Notifier -m test -s MAILSERVER:PORT -xu EMAIL@DOMAIN.COM -xp PASSWORD

(생산 중에는 아마도 -q.

따라서 하나의 명령이 한 줄의 주제를 다운로드하면 어떻게이를 SendEmail 명령에 넣을 수 있습니까?

예를 들어, 나는 -M 매개 변수 후 "$ 1"을 사용한 둘 사이에 파이프 문자를 사용하려고 시도했지만, 읽지 않은 이메일이 없을 때 여전히 적어도 하나의 빈 메시지를 보내 겠다는 일이 일어났습니다.

이 정보를 도와 주면이 정보를 사용하여 StackOverFlow에서 공유하여 휴대 전화의 SMS 메시지에 연결할 수있는 Gmail Notifier를 구축하는 방법을 공유하겠습니다.

도움이 되었습니까?

해결책

Viraptor & DigitalRoss의 답변을 혼합하면 원하는 것을 얻을 수 있습니다. 다음 입력으로 가짜 파일을 만들어 샘플 테스트를 만들었습니다.

파일 내용 :

foo

bar

baz

그런 다음이 명령을 실행했습니다.

% cat ~/tmp/baz | while read x; do if [[ $x != "" ]]; then echo "x: '$x'"; fi; done

이것은 입력이있는 라인 만 인쇄합니다. 나는 SendEmail에 익숙하지 않습니다. 신체가 stdin에 있어야합니까, 아니면 cmdline에 그것을 전달할 수 있습니까?

다른 팁

필터와 SMS 이메일 게이트웨이를 사용하여 Gmail에서 직접 할 수 있다는 것을 알고 있습니까?

하지만 질문으로 돌아가 ...

다음 설계 패턴으로 명령 출력을 위해 쉘 스크립트로 제어 할 수 있습니다.

command1 | while read a b c restofline; do
    : execute commands here
    : command2
done

읽기 첫 번째 단어를 넣습니다 a, 두 번째 b, 그리고 나머지 라인 restofline. 루프가 단일 명령으로만 구성된 경우 xargs 프로그램은 아마도 당신이 원하는 것을 할 것입니다. 특히에 대해 읽으십시오 -I 명령의 어느 곳에도 대체 된 인수를 배치 할 수있는 매개 변수.

때로는 루프가 모양이 보입니다 ... | while read x; do, 전체 라인을 넣습니다 x.

이 구조를 시도하십시오 :

while read line
do
    sendemailcommand ... -m $line ...
done < <(curlcommand)

나는 볼 것이다 xargs 내가 말할 수있는 한 필요한 모든 기능을 제공하는 명령.

http://unixhelp.ed.ac.uk/cgi/man-cgi?xargs

아마도 다음과 같은 것일 수 있습니다.

curl_command > some_file
if [[ `wc -l some_file` != "0 some_file" ]] ; then
  email_command < some_file
fi
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top