Search code examples
linuxshelleofcat

How can I read a file in cat << EOF >


I would like to print a file in cat << EOF>. e.g.

$cat file
ad3
c43
34e
se3
we3

My script is:

$cat run.sh
cat << EOF > test.sh
#!/bin/bash
some commands
cat file #I would like to print the content of the file here
some commands
EOF

I can't able to print as desire with ./run.sh

Desire output

$cat test.sh
#!/bin/bash
some commands
ad3
c43
34e
se3
we3
some commands

Solution

  • You could use backticks, or write the file in chunks:


    #!/bin/bash
    
    cat <<OMG >zfile
    ad3
    c43
    34e
    se3
    we3
    OMG
    
    # Method1 : backticks
    
    cat << EOF > test.sh
    #!/bin/bash
    some commands1
    `cat zfile`
    some commands2
    EOF
    
    # Method2: append
    
    cat << EOF1 > test2.sh
    #!/bin/bash
    some commands1
    EOF1
    
    cat zfile >> test2.sh
    
    cat << EOF2 >> test2.sh
    some commands2
    EOF2