回声但保留双引号

时间:2013-04-10 15:36:57

标签: bash shell ubuntu echo

我正在尝试创建一个将varibles / text回显到文件的脚本 - 这个脚本的片段是:

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"

有什么想法吗?

干杯

2 个答案:

答案 0 :(得分:7)

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

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

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

cat > email.txt <<'EOF'
SUBJECT="Text here"
EMAIL="email@domain.co.uk"
EMAILMESSAGE="/tmp/emailmessage.txt"
EOF

答案 1 :(得分:2)

转义双引号将起作用

echo "a\"" 
output -> a"

试试这个:

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