尽管出现错误,但是退出代码为0"无法打开:没有这样的文件或目录"

时间:2016-08-19 21:03:45

标签: bash tar exit-code ubuntu-16.04

我在脚本中创建存档,如果由于某种原因失败,我想执行一些操作。

检查错误情况的代码如下所示:

if ! sudo tar -zcf "/not/existing/dest.tar.gz" "/existing/archive/src/"; then
    echo "Tar failed"
fi
echo "Tar exited with error code $?"

这导致以下输出:

tar (child): /not/existing/dest.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
Tar exited with error code 0

为什么tar退出代码0,即使它明显失败了?

更多信息:

OS: Ubuntu 16.04
tar --version: tar(GNU tar)1.28
sudo --version:版本1.8.16

1 个答案:

答案 0 :(得分:1)

$?从最后执行的命令中获取其值。

在上一个echo中,它从之前的echo开始,当然这是正确执行的。

if ! sudo tar -zcf "/not/existing/dest.tar.gz" "/existing/archive/src/"; then
    echo "Tar failed"                 # if it fails
fi                                    # |  
echo "Tar exited with error code $?"  # |
#                                ^^_____| it comes here