Ở đây các tài liệu với bộ <<-HERE
kết thúc hoạt động tốt cho các chuỗi văn bản nhiều dòng thụt vào. Nó sẽ xóa bất kỳ tab hàng đầu khỏi tài liệu ở đây. (Tuy nhiên, các đầu cuối dòng sẽ vẫn còn.)
cat <<-____HERE
continuation
lines
____HERE
Xem thêm http://ss64.com/bash/syntax-here.html
Nếu bạn cần giữ một số, nhưng không phải tất cả, khoảng trắng hàng đầu, bạn có thể sử dụng cái gì đó như
sed 's/^ //' <<____HERE
This has four leading spaces.
Two of them will be removed by sed.
____HERE
hoặc có thể sử dụng tr
để thoát khỏi dòng mới:
tr -d '\012' <<-____
continuation
lines
____
(Dòng thứ hai có một tab và một khoảng trắng ở phía trước; tab sẽ bị xóa bởi toán tử dấu gạch ngang trước dấu kết thúc di truyền, trong khi khoảng trắng sẽ được giữ nguyên.)
Để gói các chuỗi dài phức tạp trên nhiều dòng, tôi thích printf
:
printf '%s' \
"This will all be printed on a " \
"single line (because the format string " \
"doesn't specify any newline)"
Nó cũng hoạt động tốt trong các ngữ cảnh nơi bạn muốn nhúng các đoạn mã shell không cần thiết vào một ngôn ngữ khác trong đó cú pháp của ngôn ngữ máy chủ sẽ không cho phép bạn sử dụng tài liệu ở đây, chẳng hạn như trong Makefile
hoặc Dockerfile
.
printf '%s\n' >./myscript \
'#!/bin/sh` \
"echo \"G'day, World\"" \
'date +%F\ %T' && \
chmod a+x ./myscript && \
./myscript