: indent : { : basic : $* <<EOI >>EOO cmd <<EOF foo bar baz EOF EOI cmd <<EOF foo bar baz EOF EOO : blank : $* <<EOI >>EOO cmd <<EOF foo bar EOF EOI cmd <<EOF foo bar EOF EOO : non-ws-prefix : $* <<EOI >>EOO cmd <<EOF x EOF EOF EOI cmd <<EOF x EOF EOF EOO : whole-token : Test the case where the indentation is a whole token : $* <<EOI >>EOO x = foo bar cmd <<EOF \$x EOF EOI cmd <<EOF foo bar EOF EOO : long-line : Test the case where the line contains multiple tokens : $* <<EOI >>EOO x = foo cmd <<EOF \$x bar \$x EOF EOI cmd <<EOF foo bar foo EOF EOO : unindented : $* <<EOI 2>>EOE != 0 cmd <<EOF bar EOF EOI testscript:2:1: error: unindented here-document line EOE } $* <<EOI >>EOO # blank-lines cmd <<EOF foo bar EOF EOI cmd <<EOF foo bar EOF EOO # quote # # Note: they are still recognized in eval contexts. # $* <<EOI >>EOO cmd <<EOF 'single' "double" b'o't"h" ('single' "double") EOF EOI cmd <<EOF 'single' "double" b'o't"h" single double EOF EOO