Saya memiliki string multi-baris ini (termasuk kutipan):
abc'asdf"
$(dont-execute-this)
foo"bar"''
Bagaimana saya menetapkannya ke variabel menggunakan heredoc di Bash?
Saya perlu mempertahankan baris baru.
Saya tidak ingin lepas dari karakter dalam string, itu akan mengganggu ...
"EOF"
variabel qouted ganda , jika dipanggil via eval $VAR
, akan menyebabkan semua skrip lainnya dikomentari, karena di sini $ VAR akan dilihat sebagai satu baris ; untuk dapat menggunakan #
komentar bash dalam skrip multiline, kutipan ganda juga variabel dalam eval call:
eval "$ VAR" `.
eval
ith metode ini, tetapi tidak melacaknya karena itu adalah bagian dari beberapa paket yang eval
beberapa variabel didefinisikan dalam file konfigurasi itu. Pesan kesalahan adalah: /usr/lib/network/network: eval: line 153: syntax error: unexpected end of file
. Saya baru saja beralih ke solusi lain.
'EOF'
, dengan linebreak lolos dengan` in the content: if the second line has
perintah cd`, saya kembali: " .sh: baris X: cd: perintah tidak ditemukan "; tetapi jika saya double-quote"EOF"
; kemudian variabel bash${A}
tidak bisa dipertahankan sebagai string (mereka bisa diperluas); tapi kemudian, line-break yang diawetkan - dan, saya tidak memiliki masalah menjalankan perintah dengancd
di baris kedua ( dan kedua 'EOF' dan "EOF" tampaknya bermain dengan baik juga denganeval
, untuk menjalankan sekumpulan perintah yang tersimpan di variabel string ). Bersulang!