Literal Here Doc

When shell encounters the syntax << 'delimiter' or << "delimiter", it starts creating a multi-line buffer using these rules:

  1. A line containing exactly delimiter ends the contents

  2. Escape sequences are not expanded (e.g., \t is not translated into a literal TAB)

  3. Variables are not expanded (e.g., $foo remains $foo)

  4. Command substitutions are not performed (e.g., $(date) and `date` remain unchanged)

The buffer created is sent as stdin to the program of your choice. For example:

1 #!/bin/sh
2 cat << 'EOF'
3 $bird $(is) `\t\h\e` ${word}
4 EOF

Produces:

$bird $(is) `\t\h\e` ${word}

Last updated