44
tôi thấy trong kịch bản bash hai hình thức khác nhau mà dường như làm như vậy:
`some command`
và
$(some command)
sự khác biệt giữa hai là gì, và khi nào tôi nên sử dụng mỗi một trong số họ?
tôi thấy trong kịch bản bash hai hình thức khác nhau mà dường như làm như vậy:
`some command`
và
$(some command)
sự khác biệt giữa hai là gì, và khi nào tôi nên sử dụng mỗi một trong số họ?
Không có sự khác biệt ngữ nghĩa. Cú pháp backtick là phiên bản cũ hơn và ít mạnh mẽ hơn. Xem man bash
, Phần "Thay thế Lệnh".
Nếu vỏ của bạn hỗ trợ cú pháp $()
, hãy thích nó vì nó có thể được lồng vào nhau.
Tôi thấy rằng backticks cũng có thể được lồng nhau. Ví dụ: '\' echo \\ 'foo \\' \ '' –
@MishaMoroshko: Các biểu thức như '\' echo \ 'foo \' \ '(trái ngược với' $ (echo $ (foo)) ') đã thắng 't làm việc nói chung vì sự mơ hồ vốn có bởi vì mỗi '\' 'có thể được mở hoặc đóng. Nó có thể làm việc cho các trường hợp đặc biệt do may mắn hoặc các tính năng đặc biệt. – thiton
Có _is_ sự khác biệt ngữ nghĩa: cú pháp backtick xử lý dấu gạch chéo ngược theo cách khác và không rõ ràng. Xem: http://mywiki.wooledge.org/BashFAQ/082 – benkc