For more complex sequences of commands you should consider using the cat
command with a here document. The basic format is
command > file << END_TEXT
some text here
more text here
END_TEXT
There are two subtly different behaviors depending whether the END_TEXT label is quoted or unquoted:
unquoted label: the contents are written after the usual shell expansions
quoted label: the contents of the here document are treated literally, without the usual shell expansions
For example consider the following script
#!/bin/bash
var1="VALUE 1"
var2="VALUE 2"
cat > file1 << EOF1
do some commands on "$var1"
and/or "$var2"
EOF1
cat > file2 << "EOF2"
do some commands on "$var1"
and/or "$var2"
EOF2
The results are
$ cat file1
do some commands on "VALUE 1"
and/or "VALUE 2"
and
$ cat file2
do some commands on "$var1"
and/or "$var2"
If you are outputting shell commands from your script, you probably want the quoted form.
$echo "Some text" > afile.txt
? – Stef K Apr 13 '14 at 09:53