linux - 如何查找倒数第二个命令的退出状态?

标签 linux shell unix scripting

我正在尝试制作一个我严格想要控制标准输出的脚本。所以我将所有内容重定向到/dev/null 并打印我自己的消息。

示例:

 user@root> tar zxvf samplefile.tar;> /dev/null 2>&1 ;echo $?  

 gzip: stdin: not in gzip format  
 tar: Child returned status 1  
 tar: Error exit delayed from previous errors  
 0  

tar 命令失败,但 $?正在存储重定向的退出状态。我想要 tar 命令的退出状态。

查询:

如何获取 tar 命令的状态并将所有 std 输出重定向到/dev/null?

最佳答案

正如 Subbeh 和 Ploutox 提到的,我不应该使用“;”在两个命令之间。删除“;”后,重定向成为原始命令的一部分,并给出了正确的返回码。

但是我仍然不确定如果我们需要获得 ($?-1) 的退出状态可以使用什么。

关于linux - 如何查找倒数第二个命令的退出状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24032115/

相关文章:

c - 为什么每次在目录中制作不同的程序时只创建 a.out?

linux - 使用 bash 识别多种文件类型

c - 需要一个shell脚本自动输入1-10000到程序中

file - 符号链接(symbolic link)-复制目录层次结构

linux - shell脚本这行代码是什么意思

linux - 从linux内核模块访问cpu信息

linux - 在 Linux 中使用 wpa_cli 与 Android 的 WiFi P2P

linux - IO 操作 - 为什么不 cd?

bash - 多个 shell 脚本 worker

linux - 每次/bin/sh 被调用时你能运行一个脚本吗?