OS:bash linuxでmailxコマンドの動的パラメータリストを作成するにはどうしたらいいですか?
!/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コマンドにパラメータを構築したいのRed Hat Enterprise Linux Serverは(Tikanga)
を5.11をリリース私は、コードsnipletを持っています。
しかし、私は、ファイル名にスペースが存在する可能性があるため、「二重引用符を使用します。
残念ながら、上記の例では動作しません...彼らは属しているかのように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)で詳しく説明されています。 –