HERE Document In Docker Script File

Home » CentOS » HERE Document In Docker Script File
CentOS 4 Comments

I am trying to use a HERE document in a docker script file to generate a text file but must be doing something wrong since I get a warning message that I did not expect:

EOF: line 6: warning: here-document at line 0 delimited by end-of-file (wanted `EOF’)

This is the sample script I am testing in my docker file:

RUN bash -c “$(/bin/echo -e “cat << 'EOF' | tee -a /test.txt \     \n \
    \n  someting here \
    \n  something else here \
    \n
“)” \
EOF

Can anyone see what is wrong in the above statement?

Thanks.

4 thoughts on - HERE Document In Docker Script File

  • The second EOF should be before the part “)” \ and not after, because it has to represent the closure of the first one above….

    So it should be something like this (I have put /tmp/test.txt as I tested as non root user that cannot write into /)

    bash -c “$(/bin/echo -e “cat < \
    \n something here \
    \n
    EOF
    “)”

    I also removed the single apex from the first ‘EOF’.

    I get:

    [g.cecchi@ope46 ~]$ ll /tmp/test.txt ls: cannot access ‘/tmp/test.txt’: No such file or directory

    [g.cecchi@ope46 ~]$ bash -c “$(/bin/echo -e “cat <
    something here

    [g.cecchi@ope46 ~]$ cat /tmp/test.txt

    something here

    [g.cecchi@ope46 ~]$

    HIH, Gianluca

  • It is also necessary to have the closing here document delimiter on a line on its own, as you have done, but the OP hadn’t. In all these things it’s often useful to remove the escaped new lines. The OPs original command would been something like:

    bash -c “$(/bin/echo -e “cat << 'EOF' | tee -a /test.txt \n \n someting here \n something else here \n“)” EOF

    It’s obvious from this that the “EOF” isn’t on a line on its own and is in the wrong place compared to the parenthesis.

    P.

  • Thank you but in the docker script (running under CentOS 7), I get error messages unless I add \ as below. However, the below script still results in an error message:

    RUN bash -c “$(/bin/echo -e “cat < \
    \n something here \
    \n \
    EOF \
    “)”

    bash: line 13: warning: here-document at line 0 delimited by end-of-file (wanted `EOF’)

    It looks like I need to make some additional changes when it is used in a docker script?

  • It seems that this warning message is a result of a restriction of it being used in a docker script.