0

I would like to output results in latex table format using a bash script. However, when I want to add a newline symbol, bash either prints it (\n) or doesn't add a newline. I already tried several things (e.g. the ones mentioned https://superuser.com/questions/154936/echo-text-with-new-line-in-bash), but nothing seems to work. What am I doing wrong?

echo "$(cat $outputFile)$latexString" > $outputFile
echo "\\\\" >> $outputFile
echo "" >> $outputFile

$latexString is the line of the table I want to save, \\ is the EOF for the line in the table, and after that I want to have a newline.

EDIT The output file should look like:

res1 & 1 & 2 & 3 & 4 \\
res2 & 5 & 6 & 7 & 8 \\
...

'latexString' is then e.g.,

res1 & 1 & 2 & 3 & 4
  • What do you mean by a "newline symbol"? Do you want to add a literal \n to your LaTeX file? Isn't \\ already the "newline symbol" in LaTeX? – Joseph R. Nov 7 '13 at 17:09
  • I want to print several latexStrings on different lines. Each line needs to have \\` at the end of the line. So it cannot print \n`, but needs to put the content on separate lines instead. – MaVe Nov 7 '13 at 17:10
  • It might be better if you provided the last line of $outputFile and what $latexString is. There might be better way of approaching this. – Patrick Nov 7 '13 at 17:11
  • 2
    By echo "$(cat $outputFile)$latexString" > $outputFile, do you mean echo "$latexString" >> $outputFile? – choroba Nov 7 '13 at 17:19
  • 1
    @MaVe This is likely to truncate $outputFile. Why aren't you using >> instead? – Joseph R. Nov 7 '13 at 17:20
1

The solution is

echo "$latexString\\\\" >> $outputFile
0

printf will do the trick:

printf "%s %s\n" "$latexString" "\\\\" >> $outputFile

or even more readable:

printf "%s %s\n" "$latexString" '\\' >> $outputFile

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.