Tidak ada konsep khusus di sini. Sebaliknya, semua yang ada di shell adalah string literal, kecuali jika Anda secara eksplisit menggunakan ekspansi. Keputusan desain ini memudahkan untuk menetapkan, nah, nilai-nilai literal, yang merupakan kasus penggunaan utama dari penugasan:
varname=value
tidak mencari variabel yang dipanggil value
, tetapi menggunakan string value
secara harfiah. Dalam bash, sebagian besar karakter "spesial" seperti + - /
dll. Tidak spesial dengan cara apa pun - mereka hanya bagian dari kata-kata literal seperti karakter alfabet.
Sintaksis ekspansi memungkinkan kita untuk dengan mudah menanamkan nilai di dalam templat, mis
echo "Hello ${name}!"
(Perhatikan bahwa dalam shell, tanda kutip suka '…'
atau "…"
tidak membatasi string, sebaliknya mereka mengubah ekspansi mana yang diterapkan - tanda kutip tunggal menekan semua ekspansi dan pemisahan kata, tanda kutip ganda menekan pemisahan kata dan ekspansi glob tetapi bukan ekspansi variabel, ekspansi aritmatika (hanya Bash) ., atau perintah substitusi kata-kata berikut adalah sama: foo\ bar
, foo' 'bar
, 'foo bar'
).
Konsekuensi dari pendekatan "semuanya adalah string secara default" adalah bahwa program yang tidak hanya menggunakan string sederhana menjadi lebih rumit. Sintaks array Bash terkenal membingungkan. Ekspansi aritmatika agak tidak jelas. Namun, program semacam itu bukan yang paling cocok untuk skrip shell.
Bacaan yang disarankan: Deskripsi POSIX tentang sintaks dan semantik shell: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html