【问题标题】:how to find exit status of second last command?如何找到倒数第二个命令的退出状态?
【发布时间】:2014-07-24 18:56:34
【问题描述】:

我正在尝试制作一个严格控制标准输出的脚本。所以我将所有内容重定向到 /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?

【问题讨论】:

  • 问题是文件名后面的分号。它分隔命令。而是说:tar zxvf samplefile.tar > /dev/null 2>&1
  • 因为你写了tar zxvf samplefile.tar;。只需删除分号,它将删除消息并显示正确的$?
  • 感谢 devnull 、Subbeh 和 Ploutox。它奏效了。
  • @user2809888 您能否将答案添加为下面的真实答案,以免问题被标记为未回答?

标签: linux shell unix scripting


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 2018-09-18
    • 2012-10-12
    • 2021-10-05
    相关资源
    最近更新 更多