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.
CMD = 'ls.'
gema sq: $ CMD
set $ CMD
echo raw 1: $ 1
echo raw: $ *
set "$ CMD"
echo dq: $ 1
echo bq: `$ CMD`
gema baru: $ ($ CMD)
\
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.)