سؤال

ولدي أوبونتو لينكس. لقد وجدت قيادة واحدة واسمحوا لي تحميل المواد رسالة غير مقروءة من 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"

... ثم أمر آخر لاسمحوا لي أن إرسال البريد بسهولة (مرة واحدة أنا ركبت الأمر 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

و(لاحظ عندما تكون في إنتاج أنا ربما مبادلة -v فوق مع -q).

وهكذا، إذا كان التنزيلات أمر واحد واحد موضوعات الخط، كيف يمكنني الأنابيب هذه في الأمر sendEmail؟

وعلى سبيل المثال، حاولت باستخدام حرف الأنابيب بين البلدين، حيث كنت "$ 1" بعد المعلمة -m، ولكن ما حدث هو أنه عندما لم يكن لدي أي رسائل البريد الإلكتروني غير المقروءة فإنه لا يزال يرسل لي رسالة فارغة واحد على الأقل.

إذا يمكنك مساعدتي مع هذا، سوف تستخدم هذه المعلومات لتبادل على ستاكوفيرفلوو كيفية بناء Gmail الإشعار يمكن للمرء أن وصل إلى رسائل SMS على هواتفهم.

هل كانت مفيدة؟

المحلول

واعتقد انه اذا كنت مزيج viraptor وDigitalRoss "الأجوبة التي تحصل على ما تريد. أنا خلقت اختبار عينة عن طريق إنشاء ملف وهمية مع الإدخال التالية:

ومحتويات الملف:

foo

bar

baz

وثم ركضت هذا الأمر:

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

وهذا لن يؤدي إلا خطوط طباعة مع مدخلات بها. أنا لست على دراية sendEmail. أنها لا تحتاج الجسم لتكون على ستدين أو يمكنك تمرير ذلك على cmdline؟

نصائح أخرى

وأنت تعلم أنك تستطيع أن تفعل ذلك مباشرة في بريد جوجل باستخدام فلتر والخاص بوابة البريد الإلكتروني SMS، أليس كذلك؟

ولكن مرة أخرى إلى السؤال ...

ويمكنك الحصول على السيطرة في شيل لإخراج الأمر مع نمط التصميم التالية:

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