# Suppress latex output in scripts

I run a sequence of latex commands from a bash script. Since the latex output polutes the scripts own output I would like to suppress it. But sending the output to /dev/null will make the latex process inaccesible for the user. Hence it could be killed only manually in case there is a compilation error. How can I control latex from within the script. I.e. suppress the output and exit the process in case of error.

-
Did you try `pdflatex --interaction=batchmode`? –  egreg Jul 16 '12 at 15:27
Try this: `pdflatex -halt-on-error file.tex 1> /dev/null [[ \$? -eq 1 ]] && echo "msg in case of erros" && exit` With this, in case of errors, the msg will appear. Otherwise, the output will be send to null. –  Sigur Jul 16 '12 at 16:45
@Thiago this appears to work, but hangs if the `file.tex` doesn't exist (which is one possible error). –  Bruno Le Floch Jul 17 '12 at 16:08
So you can try to check first if the file exists. The variable `\$?` has the result of any command. Usually it could be zero or not. You can test it. –  Sigur Jul 17 '12 at 19:58

I'm using this command om my script and I'm satisfied with it.

``````pdflatex -halt-on-error file.tex 1> /dev/null
[[ \$? -eq 1 ]] && echo "msg in case of erros" && exit
``````

In case of errors, the msg will appear. Otherwise, the output will be send to null.

Now, you can try to improve with a command to search for your file before running `pdflatex`.

-
Not the best `bash` I've seen in my life... `1>` is funny, so is the `&& exit`. Also, `[[ \$? -eq 1 ]]` is not the best idea, just in case `pdflatex` returns another (non-zero) code. How about `(( \$? )) && echo "msg in case of errors"` instead ? –  gniourf_gniourf Nov 4 '12 at 0:00
I don't know. For me, it works! But if there are better solutions, thanks for helping. –  Sigur Nov 4 '12 at 0:58