Cả hai toán tử chuyển hướng "<<" và "<< -" đều cho phép chuyển hướng các dòng có trong tệp đầu vào shell, được gọi là "tài liệu ở đây", vào đầu vào của lệnh.
Tài liệu ở đây sẽ được coi là một từ duy nhất bắt đầu sau từ tiếp theo và tiếp tục cho đến khi có một dòng chỉ chứa dấu phân cách và a, không có ký tự ở giữa. Sau đó, tài liệu tiếp theo ở đây bắt đầu, nếu có. Định dạng như sau:
[n]<<word
here-document
delimiter
Trong đó n tùy chọn đại diện cho số mô tả tập tin. Nếu số bị bỏ qua, tài liệu ở đây đề cập đến đầu vào tiêu chuẩn (mô tả tệp 0).
Nếu bất kỳ ký tự nào trong từ được trích dẫn, dấu phân cách sẽ được hình thành bằng cách thực hiện loại bỏ trích dẫn trên từ và các dòng tài liệu ở đây sẽ không được mở rộng. Nếu không, dấu phân cách sẽ là chính từ đó.
Nếu không có ký tự nào trong từ được trích dẫn, tất cả các dòng của tài liệu ở đây sẽ được mở rộng để mở rộng tham số, thay thế lệnh và mở rộng số học. Trong trường hợp này, trong đầu vào hoạt động như dấu ngoặc kép bên trong (xem Dấu ngoặc kép). Tuy nhiên, ký tự trích dẫn kép ('"') sẽ không được xử lý đặc biệt trong tài liệu ở đây, ngoại trừ khi trích dẫn kép xuất hiện trong" $ () "," `` "hoặc" $ {} ".
Nếu biểu tượng chuyển hướng là "<< -", tất cả các <tab>
ký tự đầu sẽ bị xóa khỏi các dòng đầu vào và dòng chứa dấu phân cách. Nếu có nhiều toán tử "<<" hoặc "<< -" được chỉ định trên một dòng, tài liệu ở đây được liên kết với toán tử đầu tiên sẽ được ứng dụng cung cấp trước và phải được đọc trước bởi trình bao.
Khi tài liệu ở đây được đọc từ thiết bị đầu cuối và vỏ tương tác, nó sẽ ghi nội dung của biến PS2, được xử lý như mô tả trong Biến Shell, thành lỗi tiêu chuẩn trước khi đọc từng dòng đầu vào cho đến khi nhận dạng dấu phân cách.
Một số ví dụ chưa được đưa ra.
cat
. Hãy thửpsql ... << EOF ...
Xem thêm "ở đây chuỗi". mywiki.wooledge.org/BashGuide/InputAndOutput?#Here_Strings