Saya mencoba untuk mengeksekusi baris baru menggunakan echo
dan mencoba mengikuti dua perintah:
Perintah pertama:
echo $'Hello World\nThis is a new line'
Tanggapan:
Hello World This is a new line
Perintah kedua:
echo $"Hello World\nThis is a new line"
Tanggapan:
Hello World\nThis is a new line
Pertanyaan saya adalah apa perbedaan antara string yang dibungkus dengan $' '
vs string yang dibungkus dengan $" "
di bash
's echo
?
"weak quote"
dan'strong quote'
berbeda dari$'C String'
dan$"I18N String"
.Jawaban:
Seperti yang dijelaskan di sini , sintaks
$'string'
menentukan string gaya-C yang mencakup karakter yang lolos sihir, seperti\n
untuk baris baru.$"string"
adalah untuk ekspansi I18N, yang tidak memiliki keajaiban seperti itu.Perhatikan bahwa ini berbeda dari yang lebih umum
"string"
(penawaran lemah) dan'string'
(penawaran kuat).sumber
Di
$
awal string di:menyebabkan urutan melarikan diri ditafsirkan.
Manual referensi Bash [mengatakan]
Tapi
sama sekali berbeda. Ini [Artikel] pada terjemahan lokal yang spesifik mengatakan:
Catatan: IIRC keduanya
$'string'
dan$"string"
mungkin tidak menemukan dukungan di antara shell yang berbeda. Tidak hanya orang-orang dari kerang lain melihat mereka dengan rasa ingin tahu, tetapi juga mereka berdebat tentang apakah ini bisa dihindari untuk skrip portabilitas.sumber
ksh93
juga mengerti$'...'
.$'xxx'
bukan bashism tetapi pertama kali diperkenalkan olehksh
beberapa tahun sebelumnyabash
. Saat ini juga didukung olehzsh
danbusybox sh
sedang ditinjau oleh standar POSIX.