The definition of a here-document is here: http://en.wikipedia.org/wiki/Here_document
How can you type a tab in a here-document? Such as this:
cat > prices.txt << EOF coffee\t$1.50 tea\t$1.50 burger\t$5.00 EOF
UPDATE:
Issues dealt with in this question:
TAB="$(printf '\t')" cat > prices.txt << EOF coffee${TAB}\$1.50 tea${TAB}\$1.50 burger${TAB}\$5.00 EOF
You can embed your here doc in your script and assign it to a variable without using a separate file at all:
#!/bin/bash read -r -d '' var<<"EOF" coffee\t$1.50 tea\t$1.50 burger\t$5.00 EOF
Then printf
or echo -e
will expand the \t
characters into tabs. You can output it to a file:
printf "%s\n" "$var" > prices.txt
Or assign the variable's value to itself using printf -v
:
printf -v var "%s\n" "$var"
Now var
or the file prices.txt
contains actual tabs instead of \t
.
You could process your here doc as it's read instead of storing it in a variable or writing it to a file:
while read -r item price do printf "The price of %s is %s.\n" $item $price # as a sentence printf "%s\t%s\n" $item $price # as a tab-delimited line done <<- "EOF" coffee $1.50 # I'm using spaces between fields in this case tea $1.50 burger $5.00 EOF
Note that I used <<-
for the here doc operator in this case. This allows me to indent the lines of the here doc for readability. The indentation must consist of tabs only (no spaces).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With