5

変数/テキストをファイルにエコーするスクリプトを作成しようとしています-このスクリプトのスニペットは次のとおりです。

echo "
SUBJECT="Text here"
EMAIL="email@domain.co.uk"
EMAILMESSAGE="/tmp/emailmessage.txt"
" > /root/email.txt

これは正常に機能していますが、すべての二重引用符が削除されています。

現在の出力:

# cat /root/email.txt
SUBJECT=Text here
EMAIL=email@domain.co.uk
EMAILMESSAGE=/tmp/emailmessage.txt

望ましい出力:

# cat /root/email.txt
SUBJECT="Text here"
EMAIL="email@domain.co.uk"
EMAILMESSAGE="/tmp/emailmessage.txt"

何か案は?

乾杯

4

2 に答える 2

10

二重引用符はネストしません。一重引用符を使用します。

echo '
SUBJECT="Text here"
EMAIL="email@domain.co.uk"
EMAILMESSAGE="/tmp/emailmessage.txt"
' > /root/email.txt

ただし、これにより、ファイルの上部と下部に空の行が追加されます。それらが必要ない場合:

echo 'SUBJECT="Text here"
EMAIL="email@domain.co.uk"
EMAILMESSAGE="/tmp/emailmessage.txt"' > /root/email.txt

おそらく、よりクリーンな解決策は、「ヒアドキュメント」を使用することです

cat > email.txt <<'EOF'
SUBJECT="Text here"
EMAIL="email@domain.co.uk"
EMAILMESSAGE="/tmp/emailmessage.txt"
EOF
于 2013-04-10T15:39:56.853 に答える
2

二重引用符をエスケープすると機能します

echo "a\"" 
output -> a"

これを試して:

echo "
SUBJECT=\"Text here\"
EMAIL=\"email@domain.co.uk\"
EMAILMESSAGE=\"/tmp/emailmessage.txt\"
" > /root/email.txt
于 2013-04-10T15:53:38.033 に答える