次のコマンドを使用して電子メールを送信しており、すべてのパラメータが提供されている場合にのみ機能します。
空/空変数の処理方法を教えてください。たとえば、-c -b は指定されない場合は無視されます。
mailx -a ${ATTACH} -s "$SUBJECT" -c "$CC_MAIL" -b "${BCCMAIL}" -r "${FROM}" "${TO_LIST}"
ありがとう、ベラ
答え1
引用するhttps://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
${parameter:+word}
もし範囲空または設定されていない場合は、何も置き換えられず、そうでなければ拡張されます。言葉交換されます。
mailx ${ATTACH:+-a} "${ATTACH}" ${SUBJECT:+-s} "$SUBJECT" ${CC_MAIL:+-c} "$CC_MAIL" ${BCCMAIL:+-b} "${BCCMAIL}" ${FROM:+-r} "${FROM}" "${TO_LIST}"
例:
echo mailx ${ATTACH:+-a} "${ATTACH}" ${SUBJECT:+-s} "$SUBJECT" ${CC_MAIL:+-c} "$CC_MAIL" ${BCCMAIL:+-b} "${BCCMAIL}" ${FROM:+-r} "${FROM}" "${TO_LIST}"
ATTACH=foo
echo mailx ${ATTACH:+-a} "${ATTACH}" ${SUBJECT:+-s} "$SUBJECT" ${CC_MAIL:+-c} "$CC_MAIL" ${BCCMAIL:+-b} "${BCCMAIL}" ${FROM:+-r} "${FROM}" "${TO_LIST}"
SUBJECT=bar
echo mailx ${ATTACH:+-a} "${ATTACH}" ${SUBJECT:+-s} "$SUBJECT" ${CC_MAIL:+-c} "$CC_MAIL" ${BCCMAIL:+-b} "${BCCMAIL}" ${FROM:+-r} "${FROM}" "${TO_LIST}"
印刷
mailx
mailx -a foo
mailx -a foo -s bar