0

私のbashスクリプトでは、echoを使用して、cスタイルのコメントを含む文字列を次のようにメールコマンドにパイプして echo -e $EMAIL_TXT | mail -s "$SUBJECT" $RECIPIENT$EMAIL_TXTます
"/* some text */"。電子メールでは、実際にはルート内の/*すべてのディレクトリとして評価されているため、ルート内のすべてのディレクトリのリストを取得しています。これを実際のコマンドではなく文字列として評価するスクリプトを取得するにはどうすればよいですか?

4

2 に答える 2

1

引用符を付ける$EMAIL_TXT

echo "$EMAIL_TXT"

についてのメモ-e:

-e引数内のエスケープ シーケンス ( や など\n)を対応する文字 (これらの場合は改行とタブ) に変換します。引数に実際の改行文字とタブ文字が含まれている場合は必要ありません。また、おそらく望ましくありません。たとえば、この回答が電子メールのテキストであるとします。その場合、は を改行に変換し、メッセージの意味を完全に破壊します。\techoecho -e\n

bash\n特定の場合を除き、改行に変換されません。したがって、次のように入力すると:

echo "foo\nbar"

わかるでしょ

foo\nbar

それがあなたが入力したものだからです。bashエスケープ シーケンスを変換しません。ただし、別の引用形式を使用して、bash にエスケープ シーケンスを変換させることができます。

$ echo $'foo\nbar'
foo
bar
$

もちろん、改行だけを含めることもできます:

$ echo "foo
> bar"
foo
bar
$
于 2013-07-01T15:22:29.707 に答える
0

変数を引用符で囲みます。いえ

echo -e "$EMAIL_TXT" | mail -s "$SUBJECT" $RECIPIENT

違いを確認するには、引用符を付けて、または付けずに echo コマンドだけを実行します。

于 2013-07-01T15:25:49.283 に答える