Bash,检查命令返回然后回显它

时间:2014-06-02 13:53:18

标签: bash

在下面的一段代码中,即使pdfinfo以1退出,在回显中$?也会打印0。那么,输出的是什么,if的退出值?

if ! pdfinfo "${NOMBRE_PDF}" 2>> /dev/null > /dev/null
      then
        echo "El pdf generado no es válido codigo del pdfinfo = $?" >> "${ARCHIVO_LOG}"

1 个答案:

答案 0 :(得分:4)

!反转退出状态,因此零值是正确的。例如:

$ false; echo $?
1
$ ! false; echo $?
0

您必须找到另一种捕获退出状态的方法:

pdfinfo … || echo …

将是一种方式。

其他方式:

# Hat tip: konsolebox
if pdfinfo "${NOMBRE_PDF}" 2>> /dev/null > /dev/null; then
  :
else
  echo "El pdf generado no es válido codigo del pdfinfo = $?" >> "${ARCHIVO_LOG}"; ...
fi

until pdfinfo "${NOMBRE_PDF}" 2>> /dev/null > /dev/null; do
  echo "El pdf generado no es válido codigo del pdfinfo = $?" >> "${ARCHIVO_LOG}"; ...
  break
done
相关问题