管道命令到 mailx,如果没有内容则不发送邮件
pipe command to mailx and do not send mail if no content
我的系统 (rhel5) 不支持 mailx
的 -E
选项(如果正文为空则不发送电子邮件)。有没有我可以用来模拟此功能的单线?例如第一个会发送,但第二个不会
echo 'hello there' | blah | mailx -s 'test email' me@you.com
echo '' | blah | mailx -s 'test email' me@you.com
你可以用一个技巧而不是一个程序来尝试它:
msg='hello there' && [ -n "$msg" ] && echo "$msg" | mailx -s 'test email' me@you.com
如果您的消息来自另一个脚本,您必须运行将其作为
msg="$(get_it)" && [ -n "$msg" ] && echo "$msg" | mailx -s 'test email' me@you.com
如果 [ ... ]
不受支持,您也可以使用 [[ ... ]]
:
msg="$(get_it)" && [[ -n "$msg" ]] && echo "$msg" | mailx -s 'test email' me@you.com
嗯。 "one-liner" 有点相对,因为这些在技术上是单行的,但它们可能不适合您:
stuff=$(echo 'hello there') ; [ -n "${stuff}" ] && echo ${stuff} | mailx -s 'test email' me@you.com
stuff=$(echo '') ; [ -n "${stuff}" ] && echo ${stuff} | mailx -s 'test email' me@you.com
我的系统 (rhel5) 不支持 mailx
的 -E
选项(如果正文为空则不发送电子邮件)。有没有我可以用来模拟此功能的单线?例如第一个会发送,但第二个不会
echo 'hello there' | blah | mailx -s 'test email' me@you.com
echo '' | blah | mailx -s 'test email' me@you.com
你可以用一个技巧而不是一个程序来尝试它:
msg='hello there' && [ -n "$msg" ] && echo "$msg" | mailx -s 'test email' me@you.com
如果您的消息来自另一个脚本,您必须运行将其作为
msg="$(get_it)" && [ -n "$msg" ] && echo "$msg" | mailx -s 'test email' me@you.com
如果 [ ... ]
不受支持,您也可以使用 [[ ... ]]
:
msg="$(get_it)" && [[ -n "$msg" ]] && echo "$msg" | mailx -s 'test email' me@you.com
嗯。 "one-liner" 有点相对,因为这些在技术上是单行的,但它们可能不适合您:
stuff=$(echo 'hello there') ; [ -n "${stuff}" ] && echo ${stuff} | mailx -s 'test email' me@you.com
stuff=$(echo '') ; [ -n "${stuff}" ] && echo ${stuff} | mailx -s 'test email' me@you.com