man bash
đưa ra điều này về trích dẫn duy nhất
Các ký tự kèm theo trong dấu ngoặc đơn duy trì giá trị theo nghĩa đen của từng ký tự trong dấu ngoặc kép. Một trích dẫn có thể không xảy ra giữa các trích dẫn đơn, ngay cả khi trước dấu gạch chéo ngược.
Bất cứ điều gì bạn gõ vào dòng lệnh, bash giải thích nó và sau đó nó sẽ gửi kết quả cho chương trình nó là vụ phải được gửi to.In trường hợp này, nếu bạn sử dụng sed 's/$old_run/$new_run/'
, bash đầu tiên nhìn thấy sed
, nó nhận ra nó như là một món quà thực thi trong $PATH
biến . Việc sed
thực thi đòi hỏi một đầu vào. Bash tìm kiếm đầu vào và tìm thấy 's/$old_run/$new_run/'
. Các trích dẫn đơn nói bash không diễn giải nội dung trong đó và vượt qua chúng như hiện tại. Vì vậy, bash sau đó chuyển chúng cho sed. Sed đưa ra lỗi vì chỉ $
có thể xảy ra ở cuối dòng.
Thay vào đó, nếu chúng ta sử dụng dấu ngoặc kép, nghĩa là, "s/$old_run/$new_run/"
sau đó bash xem điều này và diễn giải $old_run
như một tên biến và thực hiện thay thế (giai đoạn này được gọi là mở rộng biến). Đây thực sự là những gì chúng tôi yêu cầu.
Nhưng, bạn phải cẩn thận khi sử dụng dấu ngoặc kép bởi vì, chúng được giải thích trước tiên bằng bash và sau đó được trao cho sed. Vì vậy, một số ký hiệu như `phải được thoát trước khi sử dụng chúng.