Shell: bagaimana menulis file teks multiline tanpa keluar dari simbol khusus?


3

Saya tahu pertanyaannya sepertinya harus didiskusikan ribuan kali sebelumnya. Tetapi entah bagaimana saya tidak dapat menemukan solusi yang baik.

Masalah: Saya perlu menulis teks multiline dari shell. Teks mungkin berisi urutan karakter khusus (mulai dari $) dan saya tidak ingin menghindarinya. Bagaimana cara melakukannya?

Saat ini saya menggunakan kucing:

cat <<TAGTEXTFILE > sometext.txt
Here is some text in which I don't want to escape sequences like: $().
I just want to see this text in this script exactly as 
it will look in resulting sometext.txt file.
TAGTEXTFILE

Tetapi dengan kucing saya harus melarikan diri ini: $ (). Bagaimana cara menulis teks multiline tanpa keluar dari karakter khusus? Tolong jangan menawarkan untuk menggunakan Python, saya butuh solusi shell (bash atau dash).


1
Apa sistemmu? saya tidak dapat mereproduksi masalah Anda di tambang (Ubuntu 12.04 dan Debian 5). Salin / tempel kode Anda berfungsi seperti pesona ...
— user2196728

@ user2196728 berfungsi, tetapi tidak akan berfungsi jika ada $ PWD di dalamnya, misalnya. itu intinya
— Robin Green

Apakah Anda ingin $PWDdiperluas (suka /home/vladimir/foo/) atau tidak?
— terdon

Ya, tepat sekali. Sampel saya bukan dari kehidupan nyata, saya baru saja mengubahnya. Jadi '$ ()' muncul dalam skrip tetapi tidak dalam file teks yang dihasilkan. Saya mengerti mengapa, saya hanya tidak membutuhkan fungsi ini. Sebenarnya saya tidak ingin ekspansi, atau $ PWD maupun $ (...) perintah dan masih perlu cara mudah untuk menulis teks multiline.
— vladimir

Jawaban:


7
cat <<"TAGTEXTFILE" > sometext.txt
... some text ...
TAGTEXTFILE

Wow! Trik apa! Bagaimana Anda belajar hal-hal seperti itu? Apakah itu di suatu tempat dalam diri manusia?
— vladimir

itu di info bash. Tetapi umumnya ketika saya ingin tahu bagaimana melakukan sesuatu di bash saya menggunakan Google, karena dokumentasinya sulit dinavigasi.
— Robin Green

Lihat bagian manhalaman di bawah "Di sini dokumen". Kalimat yang relevan adalah "Jika ada karakter dalam kata yang dikutip, [...] baris dalam dokumen di sini tidak diperluas".
— chepner
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.