2013-04-10 47 views
3

我试图创建一个脚本这将回声可变因素/文本文件 - 这个脚本的一个片段是:回声但保留双引号

echo " 
SUBJECT="Text here" 
EMAIL="[email protected]" 
EMAILMESSAGE="/tmp/emailmessage.txt" 
" > /root/email.txt 

这是工作正常,但所有的双引号正在被删除。

电流输出:

# cat /root/email.txt 
SUBJECT=Text here 
[email protected] 
EMAILMESSAGE=/tmp/emailmessage.txt 

所需的输出:

# cat /root/email.txt 
SUBJECT="Text here" 
EMAIL="[email protected]" 
EMAILMESSAGE="/tmp/emailmessage.txt" 

任何想法?

干杯

回答

7

双引号不嵌套。使用单引号:

echo ' 
SUBJECT="Text here" 
EMAIL="[email protected]" 
EMAILMESSAGE="/tmp/emailmessage.txt" 
' > /root/email.txt 

但是,这会将空行添加到文件的顶部和底部。如果你不希望这些:

echo 'SUBJECT="Text here" 
EMAIL="[email protected]" 
EMAILMESSAGE="/tmp/emailmessage.txt"' > /root/email.txt 

可能是一个清洁的解决方案是使用"here document"

cat > email.txt <<'EOF' 
SUBJECT="Text here" 
EMAIL="[email protected]" 
EMAILMESSAGE="/tmp/emailmessage.txt" 
EOF 
+0

有关这里的文件是,它仍然可以扩展单引号不会。你没有提到的一件事是用反斜杠来引用引号。 – 2013-04-10 16:15:57

2

转义双引号将工作

echo "a\"" 
output -> a" 

试试这个:

echo " 
SUBJECT=\"Text here\" 
EMAIL=\"[email protected]\" 
EMAILMESSAGE=\"/tmp/emailmessage.txt\" 
" > /root/email.txt