Các trích dẫn đơn kèm theo một giá trị sẽ được thực hiện theo nghĩa đen: tất cả các loại mở rộng đều bị loại bỏ. Thường được sử dụng nếu giá trị bao gồm hoặc có thể bao gồm khoảng trắng (space, tab, mới-line), hoặc các ký tự đặc biệt ( $
, \
, `
) mà người dùng không muốn được mở rộng / điều trị đặc biệt bởi vỏ.
Dấu ngoặc kép bao gồm một giá trị sẽ có các biến và thay thế ký tự được thực hiện. Cần thiết khi đầu ra có thể chứa khoảng trắng và phải được chỉ định dưới dạng một giá trị.
Các trích dẫn trở lại kèm theo một lệnh, kết quả được muốn là giá trị. Vỏ mới hơn cho phép sử dụng $(...)
thay thế `...`
. Tôi thích phương pháp mới hơn.
Các mã sau đây có thể giúp hiểu những gì đang xảy ra.
CMD = 'ls.'
tiếng vang vuông: $ CMD
đặt $ CMD
tiếng vang thô 1: $ 1
tiếng vang thô: $ *
đặt "$ CMD"
tiếng vang dq: $ 1
tiếng vang bq: `$ CMD`
tiếng vang mới: $ ($ CMD)
\
luôn được xử lý theo nghĩa đen khi được đặt trong dấu ngoặc đơn, ngay cả khi nó đứng trước a'
. Sau khi mở'
, tiếp theo'
luôn được hiểu là trích dẫn kết thúc. Một cái gì đó như trích dẫn'
trong một chuỗi trích dẫn có thể đạt được bằng cách kết thúc trích dẫn, thoát'
riêng lẻ và bắt đầu trích dẫn lại. Đó là, trong khi\'
không hoạt động giữa các'
ký tự mở và đóng ,'\''
thì không. (Xem phần chỉnh sửa của Gilles đối với một trong những bài đăng của tôi khi tôi mắc lỗi tương tự để biết chi tiết.)