2017-05-01 6 views
0

ich folgende Skript bin mit Latex-Dokumente pdf auf Kommandozeilen in Linux zu kompilieren:Kompilieren Latex von Linux-Bash-Skript

#! /bin/bash 
NAME=`echo "$1" | cut -d'.' -f1` 
pdflatex -file-line-error -halt-on-error $NAME.tex 
xdg-open $NAME.pdf 

Es funktioniert, aber selbst wenn es Fehler in der Zusammenstellung von pdflatex, xdg-offene Leitung Läuft und zeigt eine zuvor erstellte PDF-Datei.

Wie kann ich eine bedingte Anweisung für die letzte Codezeile hinzufügen, d. H. Xdg-open sollte nur ausgeführt werden, wenn die Kompilierung in der vorherigen Zeile von pdflatex erfolgreich ist? Ansonsten sollte es eine Fehlermeldung geben und nicht versuchen, irgendeine PDF-Datei anzuzeigen. Gibt pdflatex einen beliebigen Fehlercode zurück, der im Bash-Skript überprüft werden kann? Danke für Ihre Hilfe.

Antwort

0
#! /bin/bash 
NAME=`echo "$1" | cut -d'.' -f1` 
pdflatex -file-line-error -halt-on-error $NAME.tex && xdg-open $NAME.pdf 

Sollte der Trick tun.

bearbeitet die Frage im Kommentar zur Adresse:

Sicher, die entweder mit Umwickeln der anderen Befehlen in einer Subshell funktioniert:

pdflatex -file-line-error -halt-on-error $NAME.tex && (xdg-open $NAME.pdf; command2; command 3) 

oder durch den Return-Code in einer if-Anweisung Bewertung:

if [[ $? -eq 0 ]]; then 
    xdg-open $NAME.pdf 
    command2 
    command3 
fi 
+0

Was ist, wenn ich weitere Anweisungen hinzufügen muss, auch wenn ein Fehler vorliegt? Kann ich einen Wenn-Dann-Else-Block machen? – rnso

+0

Perfekt. Zwei neue Methoden, von denen ich nichts wusste. – rnso

+0

Kühl. Freut mich, Ihnen behilflich zu sein. =} – tink