【发布时间】:2017-12-19 06:56:33
【问题描述】:
我想将命令编写为 if 的条件语句,即,当命令执行没有任何错误时,它应该打印成功,如果失败则打印失败。 我什至试图阻止打印命令的长控制台消息。 以下是我正在使用的代码,它可以完美运行,无需任何条件语句,例如打印成功或失败消息。
$(BASENAME).pdf: $(BASENAME).ps
ps2pdf $(BASENAME).ps $(BASENAME).pdf
$(BASENAME).ps: $(BASENAME).dvi
dvips -Ppdf $(BASENAME).dvi -o $(BASENAME).ps
我试着把上面改成
$(BASENAME).pdf: $(BASENAME).ps
@out=ps2pdf $(BASENAME).ps $(BASENAME).pdf > /dev/null 2>&1 && echo " 5. ps2pdf successful" || echo " 5. ps2pdf failed"
$(BASENAME).ps: $(BASENAME).dvi
dvips -Ppdf $(BASENAME).dvi -o $(BASENAME).ps > /dev/null 2>&1\
if [ $? -eq 0 ];\
then \
echo " 4. dvips successful";\
else \
echo " 4. dvips failed";\
exit 2;\
fi
这导致我的执行失败并在运行代码时出现错误,如下面的错误
dvips -Ppdf basename_04.dvi -o basename_04.ps \
if [ basename_04.dvi -eq 0 ];\
then \
echo " 4. dvips successful";\
else \
echo " 4. dvips failed";\
exit 2;\
fi
/bin/sh: -c: line 2: syntax error near unexpected token `then'
/bin/sh: -c: line 2: ` then \'
make: *** [basename_04.ps] Error 1
即使用分号更新后,我也遇到了错误。
dvips -Ppdf nkukunur_04.dvi -o nkukunur_04.ps > /dev/null 2>&1 ;\
if [ nkukunur_04.dvi -eq 0 ]; \
then \
echo " 4. dvips successful"; \
else \
echo " 4. dvips failed"; \
exit 2; \
fi
/bin/sh: line 1: [: nkukunur_04.dvi: integer expression expected
4. dvips failed
请帮我解决这个问题。
【问题讨论】: