Di sini, dokumen dengan <<-HERE
terminator berfungsi baik untuk string teks multi-baris yang indentasi. Ini akan menghapus semua tab utama dari dokumen di sini. (Terminator saluran masih akan tetap.)
cat <<-____HERE
continuation
lines
____HERE
Lihat juga http://ss64.com/bash/syntax-here.html
Jika Anda perlu melestarikan beberapa, tetapi tidak semua, memimpin spasi putih, Anda dapat menggunakan sesuatu seperti
sed 's/^ //' <<____HERE
This has four leading spaces.
Two of them will be removed by sed.
____HERE
atau mungkin gunakan tr
untuk menghilangkan baris baru:
tr -d '\012' <<-____
continuation
lines
____
(Baris kedua memiliki tab dan spasi di depan; tab akan dihapus oleh operator dasbor sebelum terminator heredoc, sedangkan ruang akan dipertahankan.)
Untuk membungkus string kompleks panjang melalui banyak garis, saya suka printf
:
printf '%s' \
"This will all be printed on a " \
"single line (because the format string " \
"doesn't specify any newline)"
Ini juga berfungsi dengan baik dalam konteks di mana Anda ingin menanamkan potongan skrip shell nontrivial dalam bahasa lain di mana sintaks bahasa host tidak akan membiarkan Anda menggunakan dokumen di sini, seperti dalam a Makefile
atau Dockerfile
.
printf '%s\n' >./myscript \
'#!/bin/sh` \
"echo \"G'day, World\"" \
'date +%F\ %T' && \
chmod a+x ./myscript && \
./myscript