Saya sering melihat tutorial di web atau posting di situs ini yang banyak menggunakan karakter berikut di baris perintah. Seringkali tampaknya mereka digunakan untuk tujuan yang cukup mirip. Apa perbedaan di antara mereka ketika digunakan pada baris perintah atau untuk pemrograman shell? Untuk tujuan apa saya menggunakan yang mana dari mereka?
" " double quotes
' ' single quotes
` ` backticks
command-line
bash
NES
sumber
sumber
\
selalu diperlakukan secara harfiah ketika dilampirkan dalam tanda kutip tunggal, bahkan jika itu mendahului a'
. Setelah pembukaan'
, yang berikutnya'
selalu ditafsirkan sebagai kutipan penutup. Sesuatu seperti mengutip'
dalam string kutipan tunggal dapat dicapai dengan mengakhiri penawaran, melarikan diri secara'
individual, dan mulai mengutip lagi. Artinya, sementara\'
tidak bekerja antara'
karakter pembuka dan penutup ,'\''
tidak. (Lihat Gilles 's koreksi ke salah satu posting saya ketika saya telah membuat kesalahan yang sama untuk rincian.)Ini dijelaskan dengan sangat baik di bagian yang relevan dari manual bash. Secara singkat, apa pun dalam kutipan tunggal ditafsirkan secara harfiah. Jadi, misalnya:
Bandingkan dengan versi yang tidak dikutip:
Kutipan ganda memungkinkan ekspansi variabel (juga ekspansi sejarah dan beberapa hal lainnya). Pada dasarnya, Anda menggunakannya ketika Anda berurusan dengan sesuatu yang ingin Anda lihat diperluas. Sebagai contoh:
Dengan kata lain, tanda kutip tunggal benar-benar melindungi string dari shell sementara tanda kutip ganda melindungi beberapa hal (spasi misalnya) tetapi memungkinkan variabel dan karakter khusus untuk diperluas / ditafsirkan dengan benar.
sumber
Kutipan tunggal (
''
) digunakan untuk mempertahankan nilai literal dari setiap karakter yang disertakan dalam tanda kutip.Menggunakan tanda kutip ganda (
""
), nilai literal dari semua karakter yang dilampirkan dipertahankan, kecuali untuk tanda dolar ($
), backticks (tanda kutip tunggal mundur,``
) dan garis miring terbalik (\
).Ketika tertutup di dalam back-ticks (
``
), shell mengartikan sesuatu yang berarti "output dari perintah di dalam back-ticks." Ini disebut sebagai "substitusi perintah", karena output dari perintah diganti untuk perintah itu sendiri.referensi:
sumber
Kutipan tunggal mencegah ekspansi variabel, sementara tanda kutip ganda memungkinkan.
sumber
Saya hanya berbicara secara umum tetapi:
""
- Digunakan untuk memproses beberapa info di dalamnya sebelum dikeluarkan. (Seperti dalam PHP.)name=NESS; echo "Hello my name is $name"
akan menampilkan:Hello my name is NESS
''
- Digunakan untuk menunjukkan output apa adanya. (Juga suka di PHP.)Hello my name is $name
Jadi perbedaan antara tanda kutip ganda dan tunggal adalah bahwa tanda kutip ganda memproses variabel dan menunjukkan nilainya, sedangkan tanda kutip tunggal menunjukkan nama variabel tanpa pemrosesan.
``
- Digunakan untuk mengutip perintah yang nantinya ditugaskan ke variabel lain.sumber
Kutipan tunggal menyertakan nilai yang harus diambil secara harfiah: semua jenis ekspansi ditekan. Biasanya digunakan jika nilai meliputi atau mungkin termasuk spasi putih (spasi, tab, baru-line), atau karakter khusus (
$
,\
,`
) bahwa pengguna tidak ingin diperluas / diperlakukan khusus oleh shell.Kutipan ganda menyertakan nilai yang akan memiliki variabel, dan penggantian karakter dilakukan. Diperlukan saat output mungkin berisi spasi putih, dan harus ditetapkan sebagai nilai tunggal.
Kutipan kembali menyertakan perintah, yang hasilnya diinginkan sebagai nilai. Kerang yang lebih baru memungkinkan penggunaan
$(...)
di tempat`...`
. Saya lebih suka metode yang lebih baru.Kode berikut dapat membantu memahami apa yang terjadi.
sumber