Search code examples
shellcat

Writing to a file during a script


I need to create and write a file in the middle of a script. Is there a way to do this? Usually, to create and write to a file, I would use cat >file name, then write what I needed and ctrl+d to save and exit. However, I won't be able to ctrl+d in the script to use cat >. What would I use?


Solution

  • There are several options. For instance

    >file_name
    

    ensures that you have afterwards an empty file named file_name. If you write instead

    touch file_name
    

    then file_name will only be generated if it did not exist before. If it existed, it gets its time stamp updated.

    You can also do a

    [ -f file_name ] || touch file_name
    

    This would generate file_name, if it did not exist, but leave the time stamp unchanged if the file existed already.

    You can also fill the file with information contained in your script, by using a so-called here-document:

    cat >file_name <<'END_OF_THE_WORLD'
    Hello
    $PATH
    Goodbye
    END_OF_THE_WORLD
    

    The single quotes ensure that your file really contains the literal string $PATH, i.e. no parameter expansion is performed on the text.