シェルスクリプトで件名に空白が含まれる場合、メールする宛先がおかしくなる

シェルスクリプトでメールを送信する際に件名に空白が含まれる場合、送付する宛先がおかしくなるケースがありました

#!/bin/bash

SUBJECT="test1 test2 test3"
echo "test mail" | mail -s ${SUBJECT} admin@example.com

上記のスクリプトでメールを送ると、宛先に「admin@example.com」以外に、test2@xxxxx.com test3@xxxxx.com等の宛先が追加され、件名も「test1」のみなっています

この事象ですが、スクリプト内の件名の箇所をダブルコーテーションで囲っていないので、件名の空白部分の後の箇所が下記のように宛先が扱いされているのが原因です

echo "test mail" | mail -s test1 test2 test3 admin@example.com

件名の変数部分を下記のようにダブルコーテションで囲ってしまえば、空白があっても件名とあつかわれ、空白以降の箇所をアドレスと処理されないので、変数をダブルコーテションで囲むようにすれば大丈夫です

#!/bin/bash
SUBJECT="test1 test2 test3"

echo "test mail" | mail -s "${SUBJECT}" admin@example.com

 

スポンサーリンク

0
0