다음 명령을 사용하여 이메일을 보내고 있는데 모든 매개변수가 제공되는 경우에만 작동합니다.
빈/빈 변수를 처리하는 방법을 알려주십시오. 예를 들어, -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