Bash
如果為空,則使用標準輸入或 /dev/null 呼叫函式
我正在嘗試製作這樣的 Bash 函式:
function send_email { local DEFAULT_EMAIL='Something@Somplace.com' local email_subject="${1:-No subject line set, please check $0 on $(hostname -f)}" local email_from="${2:-$DEFAULT_EMAIL}" local email_to="${3:-$DEFAULT_EMAIL}" mailx -s "$email_subect" -r "$email_from" "$email_to" }
如果我在標準輸入()上呼叫它
echo foo | send_email "bar"
,它工作正常,mailx 拿起標準輸入並發送郵件,它到達就好了。但是,如果 stdin 上沒有任何內容,則即使設置了 -E,mailx 也會等待輸入。如果只是我,我只知道該功能總是需要在標準輸入上有一些東西才能正常工作,但我需要確保這對於技術含量低於我自己的人來說很容易使用。
有沒有辦法安裝它以使用標準輸入(如果可用)並使用 /dev/null 如果標準輸入為空?
if dd of=stdindata iflag=nonblock >/dev/null 2>&1; then mailx -s "$email_subect" -r "$email_from" "$email_to" <stdindata else mailx -s "$email_subect" -r "$email_from" "$email_to" </dev/null fi