在我提出的剧本中这个问题我遇到了以下问题。如果出现编译错误,我必须取消 3 次执行pdflatex
。这可能非常烦人。我想添加类似
if pdflatex file.tex returned failure break script
但是,我无法找到退出时返回的值pdflatex
。所以问题是:
的退出/返回值/代码是什么pdflatex
?
答案1
对我来说,关键的是0
成功编译后返回的。你没有说明你使用的是什么操作系统,所以我将提供一个 Unix Makefile 和一个 Windows 批处理文件测试。在 Unix 上,我使用
pdflatex $$NAME
if [ $$? = 0 ] ; then \
pdflatex $$NAME ; \
pdflatex $$NAME ; \
else \
\echo "Compilation failed" ; \
fi
在 Windows 上使用批处理文件时错误级别测试略有不同
pdflatex %1
if ERRORLEVEL 1 (
echo ! Compilation failed
) else (
pdflatex %1
pdflatex %1
)
由于测试适用于“硫代数或更高”,因此此测试用于测试失败而不是成功if ERRORLEVEL
。您可以在此基础上构建更多复杂性:这取决于您的要求。(例如,我的批处理文件假设要编译的文件的名称作为命令行参数给出:您可能希望使用变量或硬编码名称。)
答案2
将 Joseph 的代码转换成 shell 语法,它看起来像这样:
NAME=$1
pdflatex $NAME
if [ $? = 0 ] ; then
pdflatex $NAME ;
pdflatex $NAME ;
else
echo "Compilation failed" ;
fi
由于格式问题,我将其作为答案输入。