On Mon, Aug 30, 2021, at 4:06 PM, Přemysl Šťastný wrote:
> I think, it would be nice, if you implemented Squiggly heredoc, which 
> solves this problem by ignoring both leading spaces and leading tabs. eg.
> 
> func()(
>    cat <<~ EOF
>      blabla
>    EOF
> )

'<<~' is already syntactically valid.

    bash-5.1$ cat <<~
    heredoc> foo
    heredoc> bar
    heredoc> ~
    foo
    bar

    bash-5.1$ cat <<~EOF
    heredoc> foo
    heredoc> bar
    heredoc> ~EOF
    foo
    bar

    bash-5.1$ echo abc >EOF; cat <<~ EOF
    heredoc> foo
    heredoc> bar
    heredoc> ~
    abc

ksh93s (I think) implemented a version of this behavior using '<<#'.
That's currently a syntax error in bash, unless interactive_comments
is disabled.

    bash-5.1$ shopt -s interactive_comments
    bash-5.1$ cat <<# EOF
    bash: syntax error near unexpected token `newline'

    bash-5.1$ shopt -u interactive_comments
    bash-5.1$ echo abc >EOF; cat <<# EOF
    heredoc> foo
    heredoc> bar
    heredoc> #
    abc

-- 
vq

Reply via email to