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

标签 bash

在下面的代码中,即使 pdfinfo 以 1 退出,在 echo 中 $? 也会打印 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}"

最佳答案

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

$ 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

关于Bash,检查命令返回然后回显它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23996236/

相关文章:

bash - BASH 中更快的文本数据处理

bash - xargs 输出缓冲 -P parallel

arrays - 如何使用带有 Bash 的子字符串对字符串数组进行排序

bash:rsync 选项作为变量

linux - 使用 sed 和 pstree 显示正在使用的终端类型

Bash: "command not found"简单变量赋值

bash - 使用 vim 外部命令调用 bash 函数

bash - sed:如何删除匹配特定字符串的整行?

bash - 我怎样才能 `source` 我路径上的一个文件并让它完成制表符?

linux - Bash for 循环语法解释