Bộ chỉ huy thay thế
Một lựa chọn khác là sử dụng Lệnh thay thế . Gói một lệnh trong $()
sẽ chạy lệnh và thay thế lệnh bằng đầu ra của nó.
cat $(find ./inhere -size 1033c 2> /dev/null)
sẽ trở thành
cat ./inhere/file1 .inhere/file3
Điều này ít nhiều tương đương với việc sử dụng kiểu gói lệnh cũ hơn với dấu tick ngược:
cat `find ./inhere -size 1033c 2> /dev/null`
Thêm chi tiết từ các tài liệu được liên kết ở trên
Bash thực hiện việc mở rộng bằng cách thực thi lệnh trong môi trường lớp con và thay thế lệnh thay thế bằng đầu ra tiêu chuẩn của lệnh, với bất kỳ dòng mới nào bị xóa. Các dòng mới được nhúng không bị xóa, nhưng chúng có thể bị xóa trong quá trình tách từ. Việc thay thế lệnh $(cat file)
có thể được thay thế bằng tương đương nhưng nhanh hơn $(< file)
.
Khi hình thức backquote kiểu cũ thay thế được sử dụng, xuyệc ngược vẫn giữ được nghĩa đen của nó, trừ khi sau đó $
, `
hoặc \
. Backquote đầu tiên không có trước dấu gạch chéo ngược chấm dứt thay thế lệnh. Khi sử dụng $(command)
biểu mẫu, tất cả các ký tự giữa các dấu ngoặc đơn tạo thành lệnh; không ai được điều trị đặc biệt
Thay thế lệnh có thể được lồng nhau. Để lồng khi sử dụng biểu mẫu backquote, thoát khỏi backquote bên trong với dấu gạch chéo ngược.
Nếu sự thay thế xuất hiện trong dấu ngoặc kép, việc tách từ và mở rộng tên tệp sẽ không được thực hiện trên kết quả.
Xem câu trả lời khác này cho một số ví dụ tốt về việc sử dụng.