如何获取通过管道传输到 Linux 对话框命令的程序的状态代码

如何获取通过管道传输到 Linux 对话框命令的程序的状态代码

我正在尝试使用 Linuxdialog为 Ubuntu 准备简单的安装程序。实际命令是:

  dpkg -i package.deb 2>&1 | dialog --programbox "Installing..." 10 100

我想dialog显示命令产生的任何输出,dpkg无论是正常输出还是错误消息,因此我将 stderr 重定向到 stdout。这有效。

问题是我需要dpkg两个命令结束后的命令状态代码。只是为了知道它是否dpkg完成了它的工作。不幸的是,这些命令结束后,我只能获得dialog命令的状态代码...

有人知道如何dpkg从上面的例子中获取命令的状态代码吗?

答案1

您搜索的是管道状态

dpkg -i ... | dialog ...
echo ${PIPESTATUS[0]} # this contains the exit code of the dpkg command.

参见该示例:

$ false | true | false | true
$ echo ${PIPESTATUS[@]}
1 0 1 0

相关内容