ОС: Red Hat Enterprise Linux Server релиз 5,11 (Tikanga)Как создать динамический список параметров для команды mailx в bash linux?
У меня есть код sniplet:
!/usr/bin/env bash
v_mailx_parameter=""
v_cfg_email_adresse_to="[email protected]"
v_cfg_email_subject="Report from December 2016"
v_tmp_email_text_name="Message Body"
v_email_main_file="appel orange.txt" # -> There is a SPACE in the file name!
v_tmp_path="/home/server/tmp/"
if [ ! -z "${v_email_main_file}" ]
then v_mailx_parameter="${v_mailx_parameter} -a \"${v_tmp_path}${v_email_main_file}\""
/\
||
Here is the problem but I need this because of spaces in the name
fi
echo -e "/bin/mailx ${v_mailx_parameter} -s \"${v_cfg_email_subject}\" \"${v_cfg_email_adresse_to}\""
cat ${v_tmp_email_text_name} | /bin/mailx ${v_mailx_parameter} -s "${v_cfg_email_subject}" "${v_cfg_email_adresse_to}"
exit
ПРОБЛЕМА: Я хочу, чтобы создать параметры в команде mailx динамически.
Но я хочу использовать "двойные кавычки, потому что там могут быть пробелы в именах файлов.
К сожалению, в приведенном выше примере не работает ... потому что mailx берет двойные кавычки, как будто они принадлежат к имени файла ... и я получаю сообщение об ошибке.
Я не хочу использовать условие if else .. потому что у меня есть много файлов, которые мне нужно отправить ... Мне нужно динамическое решение.
Возможно, лучше понять, в чем моя проблема:
Он работает таким образом закодированного:
cat ${v_tmp_email_text_name} | /bin/mailx -a "/home/server/tmp/appel orange.txt" -s "${v_cfg_email_subject}" "${v_cfg_email_adresse_to}"
Но так НЕ:
v_mailx_parameter="-a \"${v_tmp_path}${v_email_main_file}\""
cat ${v_tmp_email_text_name} | /bin/mailx ${v_mailx_parameter} -s "${v_cfg_email_subject}" "${v_cfg_email_adresse_to}"
Спасибо!
Это подробно описано в [BashFAQ # 50] (http://mywiki.wooledge.org/BashFAQ/050). –