2

複数行の文字列をファイルにリダイレクトしようとしています。文字列にはquotaなどの特殊文字が含まれており、次のようになります。

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

私は次のように使用できますecho

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

このアプローチの問題は、すべてのクォータ文字をエスケープする必要があることです。cat逃げる必要をなくすために使うことを考えました。インタラクティブシェルでうまく機能するので、cat > myfile.txtエスケープせずに文字列を入力して書き込み、ファイルの終わりを。でマークできます<control>d

EOF実際のキーシーケンスなしでスクリプトにマークを付けるにはどうすればよい<control>dですか?

4

1 に答える 1

8

「ヒアドキュメント」を使用します。

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

最初の 'EOF' を囲む引用符は、「ヒア ドキュメント内のシェル変数 (など) を展開しない」ことを意味します。

于 2012-09-17T20:47:02.010 に答える