2015-07-16 2 views
-1

У меня есть система (rhel5), которая не поддерживает mailx-E (для отправки электронной почты, если тело пуста). Есть ли один вкладыш, который я мог бы использовать для имитации этой функции? например, первый пришлет, но второй будет неpipe command to mailx и не отправлять почту, если нет содержимого

echo 'hello there' | blah | mailx -s 'test email' [email protected] 
echo '' | blah | mailx -s 'test email' [email protected] 

ответ

0

Хорошо. «one-liner» - это своего рода родственник, поскольку они технически однострочные, но они могут вас не устраивать:

stuff=$(echo 'hello there') ; [ -n "${stuff}" ] && echo ${stuff} | mailx -s 'test email' [email protected] 
stuff=$(echo '') ; [ -n "${stuff}" ] && echo ${stuff} | mailx -s 'test email' [email protected] 
+0

Хе-хе, да ... я знаю, что вы имеете в виду. У меня было что-то подобное, но я думал, что есть какой-то встроенный bash, который может прекратить работу с трубой при некоторых условиях. – yee379

+0

Да, это определенно ваш реальный вопрос. [Этот вопрос здесь] (http://stackoverflow.com/questions/8976139/shell-pipe-exit-immediately-when-one-command-fails), кажется, отвечает на это. – pooley1994

0

Вы можете попробовать это трюк, а не программа для трубы:

msg='hello there' && [ -n "$msg" ] && echo "$msg" | mailx -s 'test email' [email protected] 

Если ваше сообщение приходит из другого сценария вы бы должны запустить его как

msg="$(get_it)" && [ -n "$msg" ] && echo "$msg" | mailx -s 'test email' [email protected] 

Если [ ... ] не поддерживается вы можете также использовать [[ ... ]]:

msg="$(get_it)" && [[ -n "$msg" ]] && echo "$msg" | mailx -s 'test email' [email protected] 

 Смежные вопросы

  • Нет связанных вопросов^_^