Không có khái niệm đặc biệt ở đây. Thay vào đó, mọi thứ trong shell là một chuỗi ký tự, trừ khi bạn rõ ràng sử dụng một bản mở rộng. Quyết định thiết kế này giúp dễ dàng gán, các giá trị theo nghĩa đen, là trường hợp sử dụng chính của các bài tập:
varname=value
không tìm kiếm một biến được gọi value
, nhưng sử dụng chuỗi theo value
nghĩa đen. Trong bash, hầu hết các ký tự đặc biệt của người Viking như + - /
v.v ... không đặc biệt theo bất kỳ cách nào - chúng chỉ là một phần của các từ theo nghĩa đen giống như các ký tự chữ cái.
Cú pháp mở rộng cho phép chúng ta dễ dàng nhúng các giá trị bên trong một mẫu, ví dụ:
echo "Hello ${name}!"
(Lưu ý rằng trong shell, các trích dẫn thích '…'
hoặc "…"
không phân định chuỗi, thay vào đó chúng thay đổi mở rộng được áp dụng - trích dẫn đơn ngăn chặn tất cả các mở rộng và tách từ, trích dẫn kép ngăn chặn tách từ và mở rộng toàn cầu nhưng không mở rộng biến đổi, mở rộng số học (chỉ Bash) ., hoặc lệnh thay Những lời sau đây là tương đương: foo\ bar
, foo' 'bar
, 'foo bar'
).
Hậu quả của tất cả mọi thứ là một chuỗi theo cách tiếp cận mặc định là các chương trình không chỉ sử dụng các chuỗi đơn giản trở nên phức tạp hơn. Cú pháp mảng của Bash nổi tiếng là khó hiểu. Mở rộng số học có phần không rõ ràng. Tuy nhiên, các chương trình như vậy không phù hợp nhất cho các kịch bản shell.
Đề nghị đọc: Mô tả POSIX về cú pháp shell và ngữ nghĩa: http://pub.opengroup.org/onlinepub/9699919799/utilities/V3_chap02.html