2012-09-17 67 views
2

我試圖將多行字符串重定向到文件。該字符串包含特殊字符像配額,看起來像這樣:使用cat將文件重定向到非交互式bash腳本中的文件時結束使用cat

import "this" 
import "that" 
main() { 
    println("some text here"); 
} 

我可以使用echo如:

echo "import \"this\" 
import \"that\" 
main() { 
    println(\"some text here\"); 
}" > myfile.txt 

這種方法的問題是,我需要逃避所有配額字符。我想過使用cat來消除轉義的需要。它在交互式shell中運行良好,因此我可以鍵入cat > myfile.txt,然後在不轉義的情況下編寫我的字符串,然後用<control>d標記文件的結尾。

如何在腳本中標記EOF而不使用實際的按鍵順序<control>d

回答

8

使用「立即文檔」:

cat <<'EOF' > myfile.txt 
import "this" 
import "that" 
main() { 
    println("some text here"); 
} 
EOF 

圍繞最初的「EOF」的報價是指「不擴大在這裏文檔中的任何shell變量(等等)」。

+0

很好,謝謝.. – none

相關問題