2013-04-10 93 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