আমি মনে করি আপনাকে এই অপারেশনের জন্য একটি টেম্প ফাইল ব্যবহার করতে হবে যাতে &&
গ্রাইপ একটি প্রস্থান স্থিতি ফিরিয়ে দেয় যদি গ্রীপটি এর মতো মিল রয়েছে:
TMPFILE=`mktemp /tmp/mailqgrep.XXXXXX`; mailq | egrep 'rejected|refused' -A5 -B5 > "$TMPFILE" && mail -s 'dd' email@email < "$TMPFILE"; rm "$TMPFILE"
যদি আপনি কোথাও কোথাও টেম্প্প ফাইলটি আঁকড়ে ধরতে আপত্তি না করেন এবং এর জন্য কোনও স্থির নাম ব্যবহার করতে পারেন তবে আপনি বিশেষ নামকরণ এবং মোছার জিনিসটি এড়িয়ে যেতে পারেন:
mailq | egrep 'rejected|refused' -A5 -B5 > /tmp/mailqgrep && mail -s 'dd' email@email < /tmp/mailqgrep
সম্পাদনা: গ্লেনের উত্তর দেখার পরে আমি এটির সাথে আরও কিছু খেললাম এবং স্পষ্টতই $()
সিনট্যাক্স ব্যবহার করে একটি ভেরিয়েবল বরাদ্দ করালে কমান্ডের প্রস্থান কোডটি ফিরে আসে, সুতরাং আপনি স্ট্রিংয়ের দৈর্ঘ্যের জন্য যে পরীক্ষাটি ব্যবহার করেছিলেন তা এড়িয়ে যেতে পারেন এবং পরিবর্তে এটি ব্যবহার করতে পারেন। এখানে এটি সমস্তই এক আদেশে রয়েছে:
data=$(mailq | egrep 'rejected|refused' -A 5 -B 5) && mail -s 'dd' email@email <<< "$data"
সম্পাদনা 2: সাইমন এর উত্তর দেখার পরে আমি আমার mail
প্রোগ্রাম চেক আউট । এটি ডিফল্টরূপে তিনি যেভাবে বর্ণনা করেছেন সেভাবে আচরণ করে না তবে এর জন্য একটি বিকল্প রয়েছে। ম্যান পৃষ্ঠা থেকে:
-E
যদি কোনও বহির্মুখী বার্তাটি তার প্রথম বা একমাত্র বার্তার অংশে কোনও পাঠ্য না থাকে, তবে তা প্রেরণ করবেন না তবে নীরবে এটি বাতিল করুন, কার্যকরভাবে প্রোগ্রাম স্টার্টআপে স্কাইপ্যাম্পাইবডি ভেরিয়েবল সেট করে। ক্রোন দ্বারা শুরু করা স্ক্রিপ্টগুলি থেকে বার্তা প্রেরণের জন্য এটি কার্যকর (8)।
এটি সম্ভব করে তোলা:
mailq | egrep 'rejected|refused' -A 5 -B 5 | mail -E -s 'dd' email@email