2012-01-20 29 views
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` 

$(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ọ?

Trả lời

44

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.

+0

Tôi thấy rằng backticks cũng có thể được lồng nhau. Ví dụ: '\' echo \\ 'foo \\' \ '' –

+10

@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

+1

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

Các vấn đề liên quan