Literal Here Doc
When shell encounters the syntax << 'delimiter' or << "delimiter", it starts creating a multi-line buffer using these rules:
  1. 1.
    A line containing exactly delimiter ends the contents
  2. 2.
    Escape sequences are not expanded (e.g., \t is not translated into a literal TAB)
  3. 3.
    Variables are not expanded (e.g., $foo remains $foo)
  4. 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}
Copy link