Saya ingin membuat string xml dengan memasukkan variabel:
str1="Hello"
str2="world"
xml='<?xml version="1.0" encoding="iso-8859-1"?><tag1>$str1</tag1><tag2>$str2</tag2>'
echo $xml
Hasilnya seharusnya
<?xml version="1.0" encoding="iso-8859-1"?><tag1>Hello</tag1><tag2>world</tag2>
Tapi yang saya dapatkan adalah:
<?xml version="1.0" encoding="iso-8859-1"?><tag1>$str1</tag1><tag2>$str2</tag2>
Saya juga mencoba
xml="<?xml version="1.0" encoding="iso-8859-1"?><tag1>$str1</tag1><tag2>$str2</tag2>"
Tetapi itu menghilangkan kutip ganda dalam dan memberi:
<?xml version=1.0 encoding=iso-8859-1?><tag1>hello</tag1><tag2>world</tag2>
Jawaban:
Anda bisa menanamkan variabel hanya dalam string yang dikutip ganda.
Cara mudah dan aman untuk membuat karya ini adalah dengan keluar dari string yang dikutip tunggal seperti ini:
Perhatikan bahwa setelah keluar dari string tanda kutip tunggal, saya menyertakan variabel dalam tanda kutip ganda. Ini untuk membuatnya aman untuk memiliki karakter khusus di dalam variabel.
Karena Anda meminta cara lain, inilah alternatif yang lebih rendah menggunakan
printf
:Ini lebih rendah karena menggunakan sub-shell untuk mencapai efek yang sama, yang merupakan proses tambahan yang tidak perlu.
Seperti @steeldriver menulis dalam komentar, dalam versi modern dari bash, Anda dapat menulis seperti ini untuk menghindari sub-shell:
Karena
printf
shell builtin, alternatif ini mungkin sebagian dengan saran pertama saya di atas.sumber
Ekspansi variabel tidak terjadi dalam string kutipan tunggal.
Anda dapat menggunakan tanda kutip ganda untuk string Anda, dan lolos dari tanda kutip ganda di dalamnya
\
. Seperti ini :Output hasil:
sumber